ImageMagick で 複数 PNG → PDF 変換時エラーに対処した時のメモ

この記事を読むのに必要な時間は約 9 分です。


FreeBSD 10.1 RELEASE で、ImageMagick を pkg からインストールし、複数 PNG → PDF に変換しようとしたら、以下のようなエラーが発生しました。

user@host:~ % convert "*.png" 1.pdf
unable to load module `/usr/local/lib/ImageMagick-6.9.1//modules-Q16/coders/png.la': file not found @ error/module.c/OpenModule/1282.

no decode delegate for this image format `PNG' @ error/constitute.c/ReadImage/501.

 

結果として、pkg の upgrade を行ったところ、 png: 1.6.17 -> 1.6.17_1 にバージョンアップされたおかげか、エラーが解消されました。

根本原因は不明ですが、一応メモしておこうと思います。

環境

  • OS : FreeBSD 10.1-RELEASE
  • ImageMagick : ImageMagick 6.9.1-10 Q16 amd64
  • png : 1.6.17 ( → 1.6.17_1 )

結論

私の場合は、pkg update により、png: 1.6.17 -> 1.6.17_1 にバージョンアップしたためか、エラーは解消し、動作するようになりました。

もし同様のエラーに遭遇した方は、pkg update をしてみると良い可能性があります。

他には、以下の対処が考えられます。最悪、ports からビルドすれば動作するかと思います…。

  • png を削除 → 再インストール
  • ImageMagick を削除 → 再インストール
  • ImageMagick を ports から ビルド

エラー発生までの経緯

png は、予めインストールされていました。 (pkg install にて)

pkg より ImageMagick をインストールしました。

インストール完了後、とあるフォルダにて、

convert "*.png" 1.pdf

というコマンドを実行したところ、前述のエラーが発生しました。

 

インストールされなかったのかと思いましたが、ファイルは存在しています。

root@host:~ # ls -l /usr/local/lib/ImageMagick-6.9.1/modules-Q16/coders/png.la

-rwxr-xr-x  1 root  wheel  921  8月 13 10:55 /usr/local/lib/ImageMagick-6.9.1/modules-Q16/coders/png.la*

 

また、pkg によるバイナリインストールのため、ImageMagick のビルド時に png 無しの設定だったりするのかと思い、以下コマンドにて確認してみました。

user@host:~ % convert -list configure | grep png
CFLAGS         -I/usr/local/include/libxml2   -I/usr/local/include/cairo -I/usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include -I/usr/local/include -I/usr/local/include/pixman-1 -I/usr/local/include/freetype2 -I/usr/local/include/libdrm  -DMESA_EGL_NO_X11_HEADERS -I/usr/local/include/libpng16 -D_THREAD_SAFE   -I/usr/local/include/librsvg-2.0 -I/usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include -I/usr/local/include -I/usr/local/include/gdk-pixbuf-2.0 -pthread -I/usr/local/include/libpng16 -I/usr/local/include/cairo -I/usr/local/include/pixman-1 -I/usr/local/include/freetype2 -I/usr/local/include/libdrm  -DMESA_EGL_NO_X11_HEADERS -D_THREAD_SAFE   -I/usr/local/include/libpng16   -I/usr/local/include/lqr-1 -I/usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include -I/usr/local/include   -I/usr/local/include/openjpeg-2.1   -I/usr/local/include   -I/usr/local/include/freetype2   -I/usr/local/include -I/usr/local/include/freetype2    -I/usr/local/include       -O2 -pipe  -fstack-protector -fno-strict-aliasing -Wall -fexceptions -D_THREAD_SAFE  -DMAGICKCORE_HDRI_ENABLE=0 -DMAGICKCORE_QUANTUM_DEPTH=16

DELEGATES      bzlib mpeg fftw fpx fontconfig freetype jbig jng jpeg lcms lqr openjp2 png ps rsvg tiff webp wmf x xml zlib

詳細は追っていませんが、以下があるので、png も利用する設定でビルドされてはいそうです。そもそも png 無しの設定であれば、png.la とやらのファイルもインストールされないでしょうし…。

-pthread -I/usr/local/include/libpng16

 

pkg からのインストールを諦めて、ports からビルドしてみようかな、と思いつつ、ダメ元で pkg の update をかけました。他にも以下のアップデートが行われたので、他の影響の可能性もあります。

root@host:~ # pkg update
vim-lite: 7.4.778 -> 7.4.796
sudo: 1.8.14 -> 1.8.14p3
screen: 4.3.1 -> 4.3.1_1
postfix: 2.11.5,1 -> 2.11.6,1
png: 1.6.17 -> 1.6.17_1
phpMyAdmin: 4.4.11 -> 4.4.13.1
pcre: 8.37_1 -> 8.37_3
mysql56-client: 5.6.25_1 -> 5.6.25_2
libmcrypt: 2.5.8_2 -> 2.5.8_3
gettext-runtime: 0.19.4 -> 0.19.5.1
freetype2: 2.6 -> 2.6_1
expat: 2.1.0_2 -> 2.1.0_3
apache24: 2.4.16 -> 2.4.16_1

 

その後に、convert “*.png” 1.pdf とコマンドを実行してみると、エラーなく pdf ファイルが作成されました。

 

 

以上、ご参考になれば幸いです。


 

今回は以上です。


 

[pn-amzn-freebsd]

 

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です