Imagick setColor无法使用php

时间:2013-07-08 17:55:14

标签: php imagemagick imagick

我尝试将所有像素设置为黑色。但它没有用。我得到了与原版相同的图像。

这是我的代码:

$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。

有什么想法吗?

1 个答案:

答案 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;