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. WP:WordPress(ワードプレス)
  2. WP:WordPress(ワードプレス)
  3. 文系と理系のメリットとデメリット
  4. 東京駅
  5. 残業
  6. プログラマーになるのに年齢は関係ある?
  7. 年収(収入)
  8. income(収入)
  9. プログラマーになろう
  10. オンライン学習支援サイト

Twitter

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

アーカイブ

PAGE TOP