0

中央に透明度のある「穴」がある画像の後ろに小さいpngを配置して、2つのpng画像をマージしようとしています。

この例では、「前面」の画像は$srcです。この例では「背面」の画像は$destです。

例1

これまでのところ、次のコードを使用して、逆に動作するようになっています($ dest画像/小さい画像を前に配置することにより)。

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

ただし、大きな画像の「後ろ」にある小さな画像を使用して、穴に完全に収まるようにする方法がわかりません。

$ src画像を0オフセットで上に「貼り付ける」ために、画像($ dest)をより大きな画像(500 x 500)として再作成する必要がありますか?このようなものは混乱しています:S

4

1 に答える 1

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

これが誰かに役立つことを願っています!

于 2013-02-13T18:32:47.533 に答える