1

我正在使用 imagick 并面临一些问题。我想合成两张图片:image01和image02,image01是背景图片,image02的一部分合成在image01上。该功能就像 GD 的imagecopy功能一样。

bool imagecopy( resource dst_im, resource src_im, int dst_x, int dst_y, 
                int src_x, int src_y,int src_w, int src_h )

将 src_im 的一部分复制到 dst_im,从 x,y 坐标 src_x、src_y 开始,宽度为 src_w,高度为 src_h。定义的部分将被复制到 x,y 坐标、dst_x 和 dst_y。

问题是:如何通过 Imagick 实现 imagecopy 功能?

谢谢你的帮助。

4

2 回答 2

1

这应该这样做:

//load files from source
$background = new Imagick(image01_src);
$overlay = new Imagick(image02_src);

//Crop the overlay to the required size
$overlay->cropImage ($new_width,$new_height,$x_offset,$y_offset);

//composite overlay on background
$background->compositeImage($overlay, Imagick::COMPOSITE_OVER, $margin_x, $margin_y);

//save result
$background->setImageFormat("png");
$background->writeImage(new_src);

//clean up
$background->clear();
$background->destroy();
$overlay->clear();
$overlay->destroy();
于 2012-12-31T09:46:22.477 回答
0

使用复合,例如:

$large_image->compositeImage($small_image, Imagick::COMPOSITE_OVER, $margin_x, $margin_y);

如果你给我看源图片和最终图片,我可以给你确切的代码。

于 2012-12-23T12:31:40.103 回答