Замена прозрачного цвета в PHP

У меня есть набор изображений. В этих изображениях существует зеленый альфа-цвет. Мне нужно заменить этот прозрачный цвет на другой цвет (я хочу заменить на белый альфа-цвет).

Это мой код:

$img = imagecreatefrompng($path . $file); 
$white_color_transparent = imagecolorallocatealpha($img, 255, 255, 255, 127);
for ($y = 0; $y < imagesy($img); $y++) {
    for ($x = 0; $x < imagesx($img); $x++) {
        $rgb = imagecolorat($img, $x, $y);
        $pixel_color = imagecolorsforindex($img, $rgb);
        if ($pixel_color['alpha'] != 0 && $pixel_color['alpha'] != 127){
            imagesetpixel($img, $x, $y, $white_color_transparent);
        }
    }
}

imagealphablending($img, false);
imagesavealpha($img, true);            
imagepng($img, $path .  $file);

И мой результирующий цвет совпадает с исходным изображением id, когда я добавляю перед

imagesetpixel($img, $x, $y, $white_color_transparent);

эту строку:

imagesetpixel($img, $x, $y, $white_color);

я получаю только белый цвет без прозрачности

5
задан yAnTar 18 April 2017 в 19:27
поделиться