【问题标题】:Make part of an image transparent with IMagick/ImageMagick使用 IMagick/ImageMagick 使图像的一部分透明
【发布时间】:2014-01-25 09:17:47
【问题描述】:

我希望使用 IMagick 使图像的一部分(或者实际上是几个部分)透明,这样我就可以将其用作不同图像的蒙版。我想不出任何简单的方法来做到这一点。

假设我的起始图像如下所示,其中 X 是任何颜色:

XXXXXXXXXXXXX
XXXXXXXXXXXXX
XXXXXXXXXXXXX
XXXXXXXXXXXXX
XXXXXXXXXXXXX

然后我希望能够使某些矩形区域透明(所以它最终有点像打孔卡):

XXXXXXXXXXXXX
X  XXXXXXXXXX
X  XXXX  XXXX
XXXXXXX  XXXX
XXXXXXXXXXXXX

有谁知道这样做的好方法吗?谢谢。

【问题讨论】:

标签: php imagemagick transparent imagick


【解决方案1】:

想通了。

//Open your image and get its dimensions
$image = new Imagick('image.png');
$height = $image->getImageHeight();
$width = $image->getImageWidth();

//Create a new transparent image of the same size
$mask = new Imagick();
$mask->newImage($width, $height, new ImagickPixel('none'));
$mask->setImageFormat('png');

//Draw onto the new image the areas you want to be transparent in the original
$draw = new ImagickDraw();
$draw->setFillColor('black'); 
$draw->rectangle( 10,10,100,100 );
$mask->drawImage( $draw );

//Composite the images using Imagick::COMPOSITE_DSTOUT
$image->compositeImage($mask, Imagick::COMPOSITE_DSTOUT, 0, 0, Imagick::CHANNEL_ALPHA); 

【讨论】:

  • 对我不起作用,蒙版的black 部分就像透明一样,对主图像没有任何影响。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-05
  • 2016-02-26
  • 2014-08-12
  • 1970-01-01
  • 2015-08-19
  • 2019-02-10
  • 1970-01-01
相关资源
最近更新 更多