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

martin martin.info.jp @ gmail.com
2010年 7月 5日 (月) 21:33:34 JST


こんにちは。
うまく動かないときの対処法のひとつに、マニュアルの「ユーザー寄稿メモ」
に目を通してみるというのがあります。

http://jp.php.net/manual/ja/function.imagealphablending.php#48442

この関数で試したところ、意図したような出力になっているようです。

<?php
	$img_file_1 = "hoge_1.png";
	$img_file_2 = "hoge_2.png";
	$out_img2  = "out_2.png";
	
	$img_1 = imagecreatefrompng($img_file_1);
	$img_2 = imagecreatefrompng($img_file_2);
	$out = imagemergealpha(array($img_1, $img_2)); # ユーザーメモにあったもの

	if (imagepng($out, $out_img2)) {
		echo "TYPE2: OK.";
	}
	@imagedestroy($img_1);
	@imagedestroy($img_2);
?>


martin


2010年7月5日13:34 仲村 鮎美 <a-nakamura @ accent-inc.jp>:
> ナカムラです。
>
> アルファチャンネルを持つ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 @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://oldwww.php.gr.jp/php/novice.php3
>


PHP-users メーリングリストの案内