PHP GD (Graphics Draw) ライブラリ
#PHP

created: 2025/04/15, modified: 2025/04/20

標準のサムネイル 2024-06

PHPで画像を処理するときは、GDライブラリ(Graphics Draw)という拡張機能(関数群)を利用して画像を生成・編集・出力します。

読み込み・書き出し可能の画像の種類

PHP の GD ライブラリでは、読み込み(input)と書き出し(output)の両方に対応している画像フォーマットがあります。ただし、使用可能かどうかは PHP のビルド時に有効化された GD のオプションにも依存します。

よく使われる画像形式ごとの「読み込み対応」「書き出し対応」をまとめます。

読み込み可能な画像フォーマット(imagecreatefrom~ 系)

画像形式 関数名 読み込み対応 備考
PNG imagecreatefrompng() 対応 透過対応あり
JPEG imagecreatefromjpeg() 対応 EXIF読み取り不可
GIF imagecreatefromgif() 対応 アニメーションGIFは静止画のみ
WEBP imagecreatefromwebp() PHP7.0以降 透過も対応可能
BMP imagecreatefrombmp() PHP7.2以降 古いPHPでは未対応
WBMP imagecreatefromwbmp() 対応 モノクロ画像形式
XPM imagecreatefromxpm() 対応 あまり一般的ではない

書き出し可能な画像フォーマット(image~ 系)

画像形式 関数名 書き出し対応 備考
PNG imagepng() 対応 可逆圧縮/透過サポート
JPEG imagejpeg() 対応 非可逆圧縮/画質調整可
GIF imagegif() 対応 透過サポートあり
WEBP imagewebp() PHP7.0以降 高圧縮率/透過も可
BMP imagebmp() PHP7.2以降 ファイルサイズ大きめ
WBMP imagewbmp() 対応 モノクロ画像形式

使用できるかの確認方法

サンプルプログラム

元画像(original.png)を100×100ピクセルにリサイズして、別ファイル(thumb.png)として保存するプログラム

  1. original.png を読み込む
  2. 新しく 100 x 100 pixel の画像キャンバスを作成する
  3. 元画像をリサイズして新しい画像に貼り付ける
  4. リサイズ後の画像を thumb.png として保存する
  5. メモリを開放する

imagecopyresampled

引数 変数 意味 例での値 解説
1 $dst_image コピー先画像 $thumb 新しく作った100×100の空の画像キャンバス。ここに貼り付ける
2 $src_image コピー元画像 $src 読み込んだ元画像(original.png)
3 $dst_x 貼り付け先のX座標 0 $thumb上の左端から貼り付ける
4 $dst_y 貼り付け先のY座標 0 $thumb上の上端から貼り付ける
5 $src_x 切り取る元画像のX座標 0 $srcの左端から切り取る
6 $src_y 切り取る元画像のY座標 0 $srcの上端から切り取る
7 $dst_w 貼り付ける幅 100 $thumb上にリサイズして100pxで貼る
8 $dst_h 貼り付ける高さ 100 $thumb上にリサイズして100pxで貼る
9 $src_w 切り取る幅 $width $srcの幅(元画像サイズ)
10 $src_h 切り取る高さ $height $srcの高さ(元画像サイズ)

よくある応用

  • $dst_x, $dst_y をずらすと「枠の中で画像をずらす」ことができます
  • $src_x, $src_y を指定すれば「画像の一部分だけ切り取る」こともできます
  • $dst_w, $dst_h を変えると「指定サイズにリサイズ」できます(アスペクト比に注意)