У меня есть проблема, если я изменю свой расчет на альфа в imagecolorallocatealpha
это неправильно.
Картинки с 1 по 3 собраны вместе и выглядят так:
Если добавить картинки 4 и 5, это выглядит так:
Теперь вы можете видеть золотые и серые чешуи на теле, но это не так. Серых чешуек на теле не должно быть.
На самом деле дракон должен выглядеть так:
Серые чешуйки на теле должны быть яркими, а золотые чешуйки должны оставаться такими, как есть.
@Syscall уже помог с функцией «альфа» в эта тема и это работает хорошо, но теперь мы думаем, что функция «blendmode» неправильная.
function blendmode($dst, $src)
{
$w = imagesx($src);
$h = imagesy($src);
for ($x = 0; $x < $w; $x++) {
for ($y = 0; $y < $h; $y++) {
$rgbDst = imagecolorsforindex($dst, imagecolorat($dst, $x, $y));
$rgbSrc = imagecolorsforindex($src, imagecolorat($src, $x, $y));
$r = min($rgbSrc['red'] + $rgbDst['red'], 255);
$g = min($rgbSrc['green'] + $rgbDst['green'], 255);
$b = min($rgbSrc['blue'] + $rgbDst['blue'], 255);
imagesetpixel($src, $x, $y, imagecolorallocatealpha($src, $r, $g, $b, 204 / 255 * 105));
}
}
return $src;
}
Вот как выглядит дракон с ошибочной функцией blendmode:
Во-первых, я бы порекомендовал вам не придерживаться встроенных графических библиотек для php.
Я бы порекомендовал вам ImageMagik (Imagick) или вмешательства (http://image.intervention.io/).
Это намного более мощные библиотеки.
Других решений пока нет …