2

同じサイズの複数の透過 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 つの画像すべてを結合して表示するにはどうすればよいですか。

ありがとうございました

4

2 に答える 2

3

最初の例を修正して、それを機能させました。

    <?php

$x = 500;
$y = 500;

$final_img = imagecreatetruecolor($x, $y);


imagesavealpha($final_img, true);


$trans_colour = imagecolorallocatealpha($final_img, 0, 0, 0, 127);
imagefill($final_img, 0, 0, $trans_colour);


$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);
imagealphablending($final_img, true);


header('Content-Type: image/png');
imagepng($final_img);

?>
于 2012-07-24T11:33:51.663 に答える
0

透明な画像をコンパイルするためにこのライブラリを試すことができます。レイヤー化する各画像を新しい透かし画像として扱うだけです。

于 2012-07-25T00:55:12.017 に答える