画像のアップロード機能を作成していたのですが、
少しはまったので、
メモがてら情報を残しておくことに。
はまったのは、
PNG画像をリサイズする際に、
透過されている画像の背景部分が黒くなってしまう点です。
ソースはこちらです↓
・
・
//サイズを指定して画像を作成
$canvas = imagecreatetruecolor($width, $height);
//画像を再サンプリング
$error_flg = imagecopyresampled($canvas,$image, 0, 0, 0, 0, $width, $height, $original_width, $original_height);
・
・
//画像をメモリから開放
imagedestroy($canvas);
このような場合は、
imagesavealpha()
で「アルファフラグ」を設定すれば問題は解決するようです。
ただ、
imagesavealpha()
を設定する場合には、
アルファブレンディングを解除する必要があるとのことです。
※以下を参照させて頂きました。
http://www.phppro.jp/phpmanual/php/function.imagesavealpha.html
なので、
以下のような処理を追加すればOKのようです。
//アルファブレンディングを無効
imagealphablending($canvas, false);
//アルファフラグを設定
imagesavealpha($canvas, true);
今回であれば、
以下のように修正することで、
問題なくPNG画像の処理を行えるようになりました!!
・
・
//サイズを指定して画像を作成
$canvas = imagecreatetruecolor($width, $height);
//アルファブレンディングを無効
imagealphablending($canvas, false);
//アルファフラグを設定
imagesavealpha($canvas, true);
//画像を再サンプリング
$error_flg = imagecopyresampled($canvas,$image, 0, 0, 0, 0, $width, $height, $original_width, $original_height);
・
・
//画像をメモリから開放
imagedestroy($canvas);
この記事へのコメントはありません。