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

 

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

名前ダッチ

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

Twitterはこちら >>

関連記事

最近の記事

  1. レンタルサーバ:おすすめの共用サーバ
  2. アフィリエイト
  3. VPSサーバー
  4. ブログのネタ探し
  5. プログラミング
  6. SSLとは
  7. 常時SSL通信設定後にやっておくべきこと
  8. 常時SSL通信設定方法
  9. htaccessとは
  10. WordPress

Twitter

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

  • リモートやってみて分かったこと。 会社って意外と仕事に集中できていなかった。 当たり前か。会社って、別に落ち着ける空間じゃないですからね。
    about 2日 ago via Twitter Web App

アーカイブ

PAGE TOP