我尝试将所有像素设置为黑色。但它没有用。我得到了与原版相同的图像。
这是我的代码:
$image = new Imagick(__DIR__."/image_new.jpg");
$i=0;
$j=0;
while ($i < 100)
{
$j=0;
while($j < 100)
{
$pixel = $image->getImagePixelColor($i, $j);
$pixel->setColor("#000000");
$j++;
}
$i++;
}
header("content-type:image/jpeg");
echo $image;
图片尺寸为100x100。
有什么想法吗?
答案 0 :(得分:2)
Imagick::getImagePixelColor将返回ImagickPixel个对象;哪个,会从原始的Imagick对象复制数据。更改像素的数据/状态后,您需要将像素“同步”回图像。为了帮助完成此过程,我们提供了ImagickPixelIterator个对象 - 请参阅Imagick::getPixelIterator。这是一个简单的例子
$image = new Imagick(__DIR__."/image_new.jpg");
$pixel_iterator = $image->getPixelIterator();
foreach($pixel_iterator as $i => $pixels)
{
if( $i < 100 )
{
foreach($pixels as $j => $pixel)
{
if( $j < 100 )
{
$pixel->setColor("#000000");
}
}
}
$pixel_iterator->syncIterator();
}
header("content-type:image/jpeg");
echo $image;