Avdoshyn
Новичок
GD: Подбор цвета шрифта в зависимости от цвета пиксела на фото
Собственно задача в сабже.
Есть фотогалерея, при аплоаде фото необходимо добавлять на фото автора, соответственно цвет шрифта должен контрастировать с фоном фото.
В общем-то вопрос сводиться к тому как корректно перевести RGB черной белый Duotone.
Пока что все до чего дошел
$dest = ImageCreateFromJPEG($file);
$black = imagecolorallocate($dest, 0, 0, 0);
$white = imagecolorallocate($dest, 255, 255, 255);
$rgb1 = imagecolorat($dest,$x,$y-5);
$ar1 = imagecolorsforindex($dest,$rgb1);
$sum1 = $ar1["red"]+$ar1["green"]+$ar1["blue"];
$criteria = round(765/2);
if($criteria<$sum1) $color = $black;
else $color = $white;
imagettftext($dest, 8, 0, $x, $y, $color, "verdanab.ttf", $text);
Кстати если кого интересует вариант просто инвертации цвета, то он достигается так
$rgb = imagecolorat($dest,$x,$y);
$ar = imagecolorsforindex($dest,$rgb);
$r = 255-$ar["red"];
$g = 255-$ar["green"];
$b = 255-$ar["blue"];
$color = imagecolorallocate($dest, $r, $g, $b);
но это не подходит - потому что будет не сайт - а елочная игрушка, интересует только RGB->черно-белый
Собственно задача в сабже.
Есть фотогалерея, при аплоаде фото необходимо добавлять на фото автора, соответственно цвет шрифта должен контрастировать с фоном фото.
В общем-то вопрос сводиться к тому как корректно перевести RGB черной белый Duotone.
Пока что все до чего дошел
$dest = ImageCreateFromJPEG($file);
$black = imagecolorallocate($dest, 0, 0, 0);
$white = imagecolorallocate($dest, 255, 255, 255);
$rgb1 = imagecolorat($dest,$x,$y-5);
$ar1 = imagecolorsforindex($dest,$rgb1);
$sum1 = $ar1["red"]+$ar1["green"]+$ar1["blue"];
$criteria = round(765/2);
if($criteria<$sum1) $color = $black;
else $color = $white;
imagettftext($dest, 8, 0, $x, $y, $color, "verdanab.ttf", $text);
Кстати если кого интересует вариант просто инвертации цвета, то он достигается так
$rgb = imagecolorat($dest,$x,$y);
$ar = imagecolorsforindex($dest,$rgb);
$r = 255-$ar["red"];
$g = 255-$ar["green"];
$b = 255-$ar["blue"];
$color = imagecolorallocate($dest, $r, $g, $b);
но это не подходит - потому что будет не сайт - а елочная игрушка, интересует только RGB->черно-белый