gd — установить альфа каждого пикселя в изображении

Я хочу установить альфа каждого пикселя в изображении, используя функции php gd.

Пока у меня есть это:

$src = imagecreatefrompng('image.png');

$w = imagesx($src);
$h = imagesy($src);

$alpha = 204;

for ($x = 0; $x < $w; $x++) {
for ($y = 0; $y < $h; $y++) {
// set $alpha for each pixel in $src
}
}

imagepng($src);
imagedestroy($src);

0

Решение

Альфа должна быть определена в 0 и 127. Затем вы должны использовать imagealphablending() а также imagesavealpha() сохранить и использовать альфа.

$src = imagecreatefrompng('image.png');

imagealphablending($src, false);
imagesavealpha($src, true);

$w = imagesx($src);
$h = imagesy($src);

$alpha = round(204/255*127); // convert to [0-127]

for ($x = 0; $x < $w; $x++) {
for ($y = 0; $y < $h; $y++) {

// get current color (R, G, B)
$rgb = imagecolorat($src, $x, $y);
$r = ($rgb >> 16) & 0xff;
$g = ($rgb >> 8) & 0xff;
$b = $rgb & 0xf;

// create new color
$col = imagecolorallocatealpha($src, $r, $g, $b, $alpha);

// set pixel with new color
imagesetpixel($src, $x, $y, $col);
}
}
imagepng($src);
imagedestroy($src);
0

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

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