我正在尝试用新背景替换图像的背景。
输入图像将是一个绿盒图像,它应该将其绿色背景替换为透明,然后应该插入一个新的背景图像。
它应该是这样的
目前,我仍在努力用透明背景替换绿色像素,因为绿色像素 rgb 值正在发生变化,而不仅仅是一些静态 rgb 值。
这怎么可能存档?
<?php
// rgbs
$red = 44;
$green = 255;
$blue = 56;
$alpha = .45;
// input img
$img = imagecreatefromjpeg('./img.jpg');
// new background
$bg = imagecreatefromjpeg('./bg.jpg');
// replace background
for ($y = 0; $y < imagesy($img); $y++) {
for ($x = 0; $x < imagesx($img); $x++) {
$rgb = imagecolorat($img, $x, $y);
$pixel_color = imagecolorsforindex($img, $rgb);
$oldR = ($pixel_color['red'] - $alpha * $red) / (1 - $alpha);
$oldG = ($pixel_color['green'] - $alpha * $green ) / (1 - $alpha);
$oldB = ($pixel_color['blue'] - $alpha * $blue) / (1 - $alpha);
// replace green with transparent
$color = imagecolorallocate($img, $oldR, $oldG, $oldB);
imagesetpixel($img, $x, $y, $color);
imagecolortransparent($img, $color);
}
}
// save new img
imagesavealpha($img, true);
imagepng($img, './output.png');
?>