GDライブラリがロードされているのにJPG images are not supported

GDライブラリがロードされているのにJPG images are not supported

PHPGDライブラリがロードされているのにJPG images are not supported

フレームワークとは直接関係ないですが、Codeigniter で構築しているサイトで画像のリサイズをしようとしたら下記のエラーに遭遇しました。

Your server does not support the GD function required to process this type of image.
JPG images are not supported.

当初は Imagemagic で Exif の削除や画像のリサイズ処理をしようとしていましたが、Codeigniter の標準ライブラリが GD を使って(Imagemagicなどそれ以外の画像ライブラリも使える)画像加工する機能を備えているのでそれを利用しました。

Codeigniterの問題?

最初は Codeigniter の image_lib の設定の問題かと思って、設定項目のドキュメントを見ていましたが、どうやら原因は PHP 側の設定にありそうです。

画像操作クラス : CodeIgniter ユーザガイド 日本語版

PHPの設定?

まずは GD ライブラリの確認をします。最初に so ファイルがモジュールのディレクトリに存在するかチェックします。Amazon Linux で yum のパッケージでインストールした PHP5.5 用のモジュールは下記に存在しました。

$ ls /usr/lib64/php/5.5/modules/gd.so

gd.so

次に、上記の gd.so がロードされているかを確認します。まず、php.ini で読み込んでいるかを確認します。

$ ls /etc/php.d/gd.ini

gd.ini

$ cat /etc/php.d/gd.ini

; Enable gd extension module
extension=gd.so

php クライアントで gd_info() が実行できるか確認します。

$ php -r 'print_r(gd_info());'

Array
(
    [GD Version] => bundled (2.1.0 compatible)
    [FreeType Support] => 1
    [FreeType Linkage] => with freetype
    [T1Lib Support] => 1
    [GIF Read Support] => 1
    [GIF Create Support] => 1
    [JPEG Support] => 1
    [PNG Support] => 1
    [WBMP Support] => 1
    [XPM Support] => 1
    [XBM Support] => 1
    [JIS-mapped Japanese Font Support] => 
)

この時点で GD ライブラリはロードされて php で使えそうな感じです。

原因はgdライブラリの警告

そこで、GD ライブラリの php の公式ドキュメントを確認して、以下の項目に行き着きました。

gd.jpeg_ignore_warning

jpeg2wbmp() や imagecreatefromjpeg() が出す警告を無視します。

GD ライブラリはかなり厳密に画像をチェックするようなので、一旦、この警告を無視する設定にします。今回は、php.ini で指定しました。

$ vi /etc/php.ini

[gd]
; Tell the jpeg decode to ignore warnings and try to create
; a gd image. The warning will then be displayed as notices
; disabled by default
; http://php.net/gd.jpeg-ignore-warning
;gd.jpeg_ignore_warning = 0
gd.jpeg_ignore_warning = 1

警告の原因としては、画像アップロード後に Imagemagic で Exif 情報を削除して、それからリサイズ処理をしていますが、Exif 情報を削除した際に何か情報が不足したのかもしれません。

リサイズ処理と Exif の処理の順序を入れ替えようと思いましたが、そもそも、リサイズ時に新しく画像を作れば Exif 情報は消える可能性もありますね。

最終更新日:

関連記事

人気記事

新着情報