【问题标题】:Merging two PNG images with the smaller image behind with GD使用 GD 将两个 PNG 图像与后面的较小图像合并
【发布时间】:2013-02-13 17:54:43
【问题描述】:

我试图通过在图像后面放置一个较小的 png 图像来合并两个 png 图像,该图像的中心有一个透明的“孔”。

在本例中,“正面”图片是 $src “后退”图片在示例中为 $dest

到目前为止,我已经使用以下代码使其反向工作(通过将 $dest 图像/较小的图像放在前面):

imagecopymerge($src, $dest,  300, 150, 0, 0, 150, 150, 100);

但是,我不知道如何将较小的图像“放在”较大的图像后面,以便它完全适合孔。

我是否需要将图像 ($dest) 重新创建为更大的图像 (500 x 500) 以将 $src 图像“粘贴”到偏移量为 0 的顶部?这东西令人困惑:S

【问题讨论】:

  • 我认为您不能将较大的源合并到较小的目的地。您应该将 dest 裁剪为 150x150 或您的窗口大小,并将其复制到较大图像的顶部。或者您可以按照您的建议进行操作。
  • @mkaatman 你是对的,我解决了。只需输入上面的问题就可以帮助我解决它:) 将答案放在下面

标签: php image image-processing imagemagick gd


【解决方案1】:

想通了。

首先,我将较小的图像合并到下方与较大图像匹配的空白图像中。

然后,我将带有孔的图像合并到上面创建的新图像上。见如下:

// Get size of larger image
$sz = getimagesize("larger.jpg");

// Create resources
$backing = imagecreatetruecolor($sz[0],$sz[1]);
$img1 = imagecreatefrompng("larger.jpg");
$img2 = imagecreatefrompng("smaller.jpg");

// Merge backing
imagecopymerge($backing, $img2,  300, 150, 0, 0, 150, 150, 100);

// Merge main
imagecopymerge($backing,$img1,  0, 0, 0, 0, $sz[0], $sz[1], 100);

// Save new image
imagepng($backing,$save);

// Destroy resources
imagedestroy($backing);
imagedestroy($img1);
imagedestroy($img2);

希望这对某人有所帮助!

【讨论】:

    猜你喜欢
    • 2012-03-11
    • 2012-03-06
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    相关资源
    最近更新 更多