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

関連記事

最近の記事

  1. WP:WordPress(ワードプレス)
  2. URL設計(URLデザイン)
  3. URL「ディレクトリ名」と文字アンダースコア(_)とハイフン(-)
  4. SEO対策(外部ファイルの読み込み)
  5. URL リダイレクト
  6. インデックスされない
  7. 内部対策は必要?
  8. CMS(シーエムエス)
  9. SEO業者は必要?
  10. SSL(HTTPS)

Twitter

  • 機械学習を少し勉強してみて思ったのは、Pythonがよく使われるのは便利なライブラリーが揃っているので、楽!というだけ。 多分、Pythonを使えば、数学なんて全く分からんくても、勉強して流れさえ掴めば、誰にでも出来る分野だという… twitter.com/i/web/status/1…
    about 1日 ago via Twitter Web App

アーカイブ

PAGE TOP