[PHP][Imagick] 在遮罩时保持图像透明度
[PHP][Imagick] Conserve image transparency while masking
我在 imagick (PHP) 上工作,我想在图像上应用蒙版。基本上,它工作正常。但是当它必须处理主图像的透明度时,它并没有像预期的那样工作。我来解释一下。
源图像 (SD)
遮罩图像 (TPL)
结果图片:( (DEST)
预期结果
正如您在图像上看到的那样,源的透明度并未出现在结果中...
所以,这是我的代码:
$sd = 'tiger.png';
$tpl = 'tpl.png';
$dest = 'tiger_cut.png';
$base = new Imagick($sd);
$mask = new Imagick($tpl);
$base->compositeImage($mask, Imagick::COMPOSITE_COPYOPACITY, 0, 0, Imagick::CHANNEL_ALPHA);
$base->writeImage($dest);
我在 compositeImage() 上尝试了几个选项,但...找不到合适的选项。
提前感谢您的帮助:)
解决方法如下:
$sd = 'tiger.png';
$tpl = 'tpl.png';
$dest = 'tiger_cut.png';
$base = new Imagick($sd);
$mask = new Imagick($tpl);
$base->compositeImage($mask, Imagick::COMPOSITE_DSTIN, 0, 0, Imagick::CHANNEL_ALPHA);
$base->writeImage($dest);
我在 imagick (PHP) 上工作,我想在图像上应用蒙版。基本上,它工作正常。但是当它必须处理主图像的透明度时,它并没有像预期的那样工作。我来解释一下。
源图像 (SD)
遮罩图像 (TPL)
结果图片:( (DEST)
预期结果
正如您在图像上看到的那样,源的透明度并未出现在结果中...
所以,这是我的代码:
$sd = 'tiger.png';
$tpl = 'tpl.png';
$dest = 'tiger_cut.png';
$base = new Imagick($sd);
$mask = new Imagick($tpl);
$base->compositeImage($mask, Imagick::COMPOSITE_COPYOPACITY, 0, 0, Imagick::CHANNEL_ALPHA);
$base->writeImage($dest);
我在 compositeImage() 上尝试了几个选项,但...找不到合适的选项。
提前感谢您的帮助:)
解决方法如下:
$sd = 'tiger.png';
$tpl = 'tpl.png';
$dest = 'tiger_cut.png';
$base = new Imagick($sd);
$mask = new Imagick($tpl);
$base->compositeImage($mask, Imagick::COMPOSITE_DSTIN, 0, 0, Imagick::CHANNEL_ALPHA);
$base->writeImage($dest);