Здравствуйте, мне нужно заменить зеленый фон изображения на прозрачный
может кто-нибудь помочь мне здесь, пожалуйста
это мой код
/* ---------------CHANGE THESE------------------- */
$colorToReplace = RGBtoHSL(0, 255, 0);
$hueAbsoluteError = 40;
$replacementColor = RGBtoHSL(255, 255, 255);
/* ---------------------------------------------- */
$filename = $path.$file;
$im = imagecreatefrompng($filename);
$out = imagecreatetruecolor(imagesx($im), imagesy($im));
$transColor = imagecolorallocatealpha($out, 0, 0, 0, 0);
imagefill($out, 0, 0, $transColor);
for ($x = 0; $x < imagesx($im); $x++) {
for ($y = 0; $y < imagesy($im); $y++) {
$pixel = imagecolorat($im, $x, $y);
$red = ($pixel >> 16) & 0xFF;
$green = ($pixel >> 8) & 0xFF;
$blue = $pixel & 0xFF;
$alpha = ($pixel & 0x7F000000) >> 24;
$colorHSL = RGBtoHSL($red, $green, $blue);
if ((($colorHSL[0] >= $colorToReplace[0] - $hueAbsoluteError) && ($colorToReplace[0] + $hueAbsoluteError) >= $colorHSL[0])){
$color = HSLtoRGB($replacementColor[0], $replacementColor[1], $colorHSL[2]);
$red = $color[0];
$green= $color[1];
$blue = $color[2];
}
if ($alpha == 127) {
imagesetpixel($out, $x, $y, $transColor);
}
else {
imagesetpixel($out, $x, $y, imagecolorallocatealpha($out, $red, $green, $blue, 0));
}
}
}
imagecolortransparent($out, $transColor);
imagesavealpha($out, TRUE);
header('Content-type: image/png');
imagepng($out);
я хочу удалить зеленый фон прозрачным из этого изображение перед
но я получил такой результат изображение после
как это исправить
благодарю вас
Задача ещё не решена.
Других решений пока нет …