2010年7月 5日

[PHP-users 35270]アルファチャンネルを持つpng画像同士のimagecopymerge

ナカムラです。

アルファチャンネルを持つpng画像同士のimagecopymergeについて、
わからない事がありました。
解決方法をお知りの方がおられましたら教えて頂けると助かります。

【目的】
アルファチャンネルを持つpng画像1と2を合成し、

双方のアルファチャンネルを統合保持した画像3を作成したい

【問題点】
画像1、2のアルファチャンネルを併せ持った画像が生成されない
(出力画像の理想サンプル→out_ok.png)

下記ソースで生成した画像は、アルファチャンネル部分が黒(#000000)で
塗りつぶされたものになる→out_type_1.png

【質問内容】
imagecopymerge、もしくはimagecopyでは、アルファチャンネルを持つ
png画像同士の合成はうまくいかないのか?

【環境】
PHP Version 5.2.6
GD Version bundled (2.0.34 compatible)
OS WindowsXp

【ソース】
下記URLに一式アップロード済み(imagecopymerge.zip)
http://www1.axfc.net/uploader/Sc/so/130789
---------
$img_file_1 = "hoge_1.png";
$img_file_2 = "hoge_2.png";
$out_img = "out_1.png";

//画像1の読み込み
$img_1 = imagecreatefrompng($img_file_1);
#imagealphablending($img_1, false);
#imagesavealpha($img_1, true);

//画像2の読み込み
$img_2 = imagecreatefrompng($img_file_2);
imagealphablending($img_2, false);
imagesavealpha($img_2, true);

list($in_w, $in_h, $ext) = getimagesize($img_file_1);

//画像1,2の合成
imagecopy($img_1, $img_2, 0, 0, 0, 0, $in_w, $in_h);
#imagecopymerge($img_1, $img_2, 0, 0, 0, 0, $in_w, $in_h, 100);

if (imagepng($img_1, $out_img)) {
echo "TYPE_1:OK.";
}

@imagedestroy($img_1);
@imagedestroy($img_2);
---------

アップロードしているソースには、自分なりに考えたアルファ値
保存統合の別バージョンも記述しています。
(結論としてできていません)
アルファ無し画像+アルファ込み画像ならば問題はないのですが、
両方の透明部分を合わせた画像がどうやってもできませんでした。
どうぞよろしくお願いします。

以上です。


_______________________________________________
PHP-users mailing list PHP-users@xxxxx
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3


投稿者 xml-rpc : 2010年7月 5日 20:34
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/96914
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。