同じサイズの複数の透過 PNG (製品パーツを表す) を 1 つの画像にフラット化する必要がある製品構成モジュールを構築しています。
最初に、3つの画像の構成を作成しましたが、黒い背景でこれを試しました:
<?php
$x = 500;
$y = 500;
$final_img = imagecreatetruecolor($x, $y);
$images = array('1.png', '2.png', '3.png');
foreach ($images as $image) {
$image_layer = imagecreatefrompng($image);
imagecopy($final_img, $image_layer, 0, 0, 0, 0, $x, $y);
}
imagealphablending($final_img, true);
imagesavealpha($final_img, true);
header('Content-Type: image/png');
imagepng($final_img);
?>
次に、黒い背景の問題を修正して透明なものを提供するこの機能を見つけましたが、コンポジションに最後に追加された画像のみが表示されます。
<?php
$x = 500;
$y = 500;
function imageCreateTransparent($x, $y) {
$image = imagecreatetruecolor($x, $y);
imagealphablending($image, false);
imagesavealpha($image, true);
$col = imagecolorallocatealpha($image,255,255,255,127);
imagefill($image, 0, 0, $col);
return $image;
}
$final_img = imageCreateTransparent($x, $y);
$images = array('1.png', '2.png', '3.png');
foreach ($images as $image) {
$image_layer = imagecreatefrompng($image);
imagecopy($final_img, $image_layer, 0, 0, 0, 0, $x, $y);
}
imagealphablending($final_img, true);
imagesavealpha($final_img, true);
header('Content-Type: image/png');
imagepng($final_img);
?>
透明な背景を取得し、3 つの画像すべてを結合して表示するにはどうすればよいですか。
ありがとうございました