有没有办法在 PHP 中获取图像中颜色的 x,y 位置?例如:在这张图片中
我可以得到起点,即红色的 x,y 位置。
我需要为用户创建一个选项来更改图像中特定部分的颜色。因此,如果用户想在此图像中将红色更改为蓝色。我使用 imagefill() 函数来更改颜色,但它需要 x,y 坐标才能工作。希望这是有道理的。
尝试这样的事情:
// applied only to a PNG images, You can add the other format image loading for Yourself
function changeTheColor($image, $findColor, $replaceColor) {
$img = imagecreatefrompng($image);
$x = imagesx($img);
$y = imagesy($img);
$newImg = imagecreate($x, $y);
$bgColor = imagecolorallocate($newImg, 0, 0, 0);
for($i = 0; $i < $x; $i++) {
for($j = 0; $j < $y; $j++) {
$ima = imagecolorat($img, $i, $j);
$oldColor = imagecolorsforindex($img, $ima);
if($oldColor['red'] == $findColor['red'] && $oldColor['green'] == $findColor['green'] && $oldColor['blue'] == $findColor['blue'] && $oldColor['alpha'] == $findColor['alpha'])
$ima = imagecolorallocatealpha($newImage, $replaceColor['red'], $replaceColor['green'], $replaceColor['blue'], $replaceColor['alpha']);
}
imagesetpixel($newImg, $i, $j, $ima);
}
}
return imagepng($newImg);
}
我们在这里期待$findColor
并且$replaceColor
是具有这种结构的数组:
$color = array(
'red' => 0,
'green' => 0,
'blue' => 0,
'alpha' => 0,
);
没有尝试代码,但它至少应该为您指明正确的方向。它遍历每个像素,检查该像素的颜色,如果它是我们正在寻找的颜色,则将其替换为$replaceColor
. 如果不是,则将相同的颜色放入新图像的相同位置。
由于它使用两个for
循环,因此在大图像上可能会非常消耗时间和内存。