PHP GD — альфа-расчет blendmode

У меня есть проблема, если я изменю свой расчет на альфа в imagecolorallocatealpha
это неправильно.

Изображение 1: введите описание изображения здесь

Изображение 2: введите описание изображения здесь

Изображение 3: введите описание изображения здесь

Изображение 4: введите описание изображения здесь

Изображение 5: введите описание изображения здесь

Картинки с 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:

введите описание изображения здесь

2

Решение

Во-первых, я бы порекомендовал вам не придерживаться встроенных графических библиотек для php.

Я бы порекомендовал вам ImageMagik (Imagick) или вмешательства (http://image.intervention.io/).

Это намного более мощные библиотеки.

-1

Другие решения

Других решений пока нет …