PHP(ピー・エイチ・ピー)

【PHP】PNG画像をリサイズする方法

画像のアップロード機能を作成していたのですが、

少しはまったので、

メモがてら情報を残しておくことに。

 

はまったのは、

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);

 

0
この記事を書いている人
株式会社ディープ

名前ダッチ

メールアドレスadachi@deep-deep.jp

Twitterはこちら >>

  • コメント: 0

関連記事

コメント

  • コメント (0)

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。

最近の記事

  1. サーバー
  2. リマーケッター
  3. 不動産会社向けのWordPressテーマ
  4. レンタルサーバ:おすすめの共用サーバ
  5. ホームページを活用
  6. Perl(パール)
  7. Perl(パール)
  8. ホームページを活用
  9. データ転送
  10. サーバ
ConoHa WING 2周年キャンペーン中

Twitter

ダッチ@職業ブロガー兼プログラマー
@gatsu0000

アーカイブ

PAGE TOP