私はイメージの一部を透明にしたい、私は下のコードを試しても、COMPOSITE_DSTOUTとして多くの定数を試してみましたが、すべてがうまくいかなかった、どのように知っていますか? イメージの指定領域をImagickで透明にするにはどうすればいいですか?
$fooImage->newImage(256, 256, new ImagickPixel('transparent'));
$Image->compositeImage($fooImage, Imagick::COMPOSITE_DSTOUT, $offsetX, offsetY);
私は以下のコードをテストした
は、ちょうど、透明ではなく黒と黄色ました:$width = 256;
$height = 256;
$image = new Imagick();
$image->newImage($width, $height, new ImagickPixel('yellow'));
$x = 50;
$y = 100;
$fooWidth = 100;
$fooHeight = 60;
//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($x, $y, $x + $fooWidth, $y + $fooHeight);
$mask->drawImage($draw);
//Composite the images
$image->compositeImage($mask, Imagick::COMPOSITE_DSTOUT, 0, 0,
Imagick::CHANNEL_ALPHA);
$image->setImageFormat('png');
$image->writeImage($path);
は黄色
はい、私はこのオプションを試してみました以上は、まだ動作しません。 – Suge
はい、Danackは正しいです。しかしそれだけではありません。上記の投稿と例を参照してください。 – fmw42