How to use Imagick to merge and mask images?

点点圈 提交于 2019-11-27 10:41:59

So, finally, this should do what you need:

Original image:

Opacity mask:

Overlay:

Output:

The code:

<?php
$base = new Imagick('U0R4F.png');
$mask = new Imagick('mask.png');
$over = new Imagick('3ulkM.png');

// Setting same size for all images
$base->resizeImage(274, 275, Imagick::FILTER_LANCZOS, 1);

// Copy opacity mask
$base->compositeImage($mask, Imagick::COMPOSITE_DSTIN, 0, 0, Imagick::CHANNEL_ALPHA);

// Add overlay
$base->compositeImage($over, Imagick::COMPOSITE_DEFAULT, 0, 0);

$base->writeImage('output.png');
header("Content-Type: image/png");

echo $base;
?>

I hope it's right now! Note: In your example it looks like you downscaled the base image, which I didn't (my goal is just to show how the masking is done).

Justin T.

Did you try this solution here as described by : https://stackoverflow.com/a/2351173/1093649 ?

Run this in your server (with the right image names!), and let us know, thanks.

nb : credits go to jspash

http://www.imagemagick.org/Usage/compose/#dstin should do the trick, but you need to use images with alpha channels (that shouldn't be a problem).

Edit: in PHP you have to pass it (imagick::COMPOSITE_DSTIN) as a parameter in compositeimage. Other filters in Composite Operator Constants may also be useful to you.

This type of masking is exampled using a number of different techniques in ImageMagick Examples, Thumbnails, Mask and Paint http://www.imagemagick.org/Usage/thumbnails/#mask_paint

Be warned however that the masking and the edges of the overlay image SHOULD NOT MATCH this is important or you may get problems with edge aliasing effects that is best avoided.

Extracting an alpha mask of the ring, can be done using morphology operators to thin it down to a centerline can be used to generate a mask for any random 'ring' shape. ImageMagick Examples, Skeletons by Thinning, and Pruning http://www.imagemagick.org/Usage/morphology/#thinning_skeleton

Anthony Thyssen Web Master for ImageMagick Examples, and Developer for ImageMagick

PS: nice photo from Elfling

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!