Как сделать указанную область изображения прозрачной с помощью Imagick?

Я хочу сделать часть изображения прозрачной, я попробовал код ниже, даже попробовал много констант как COMPOSITE_DSTOUT, но все не сработало, кто-нибудь знает, как это сделать?

$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); 

Получил черный внутри желтый, не прозрачный желтый

Изображение результатов

Вам нужно сделать черно-белую маску с размером вашего ввода (белый, где вы хотите, чтобы он был непрозрачным и черным, где вы хотите, чтобы он был прозрачным). Затем используйте эквивалент -compose copyopacity -composite, чтобы поместить маску в альфа-канал изображения. Извините, я не кодирую Imagick.

Вот пример использования синтаксиса командной строки ImageMagick:

Входные данные:

введите описание изображения здесь

 convert logo.jpg \( -size 640x480 xc:white -size 200x200 xc:black -geometry +200+100 -compose over -composite \) +geometry -alpha off -compose copy_opacity -composite result.png 

введите описание изображения здесь

Вы можете видеть, что это прозрачно, комбинируя его по другому изображению (в данном случае шахматной доске).

convert (-size 640×480 pattern: checkerboard) result.png -compose over -composite result2.jpg

введите описание изображения здесь

Вы пытаетесь \ Imagick :: COMPOSITE_COPYOPACITY?

Потому что это, вероятно, правильный.