LoginSignup
6
6

More than 5 years have passed since last update.

photoshopで作成したpngがImageMagickでエラーする場合

Last updated at Posted at 2015-02-27

なぜかごくまれにPhotoshopで作成したpngをImageMagickでconvertすると
convert: Corrupt image `test.png'
と怒られることがあります。

それでWindows端末で表示してみたりしても何も異常がなかったり。
そんな事ありませんか?

もしかしたらそれは libpngの不具合かも。
不具合というのはlibpng に失礼かもしれないのですが。

小生はこれで長いこと悩んでいたのですが最近になってようやく
(1) Photoshopでpngを作成するとまれにデータ長0のIDATチャンクが作成される事がある
(2) libpngはデータ長0のIDATチャンクを見るとCorruptと言って怒る
この2つの条件が重なって問題になることがわかりました。

Photoshop(のどれかのバージョン) は8kバイト毎にチャンクを作るようで
画素データがちょうと8kの倍数だと最後にデータ長0バイトのチャンクをくっつけるようなのです。
この事が厳密にpngの仕様に違反するかどうかはわからないですが
libpng先生はこのようなチャンクはお気に召さないようです。
(昔のバージョンではエラーにならないこともあるようです)
8192回に一回エラーが起きるわけですね。

そこでお行儀の悪いこの0バイト長のIDATチャンクを取り除くスクリプトを書きました

[参考]
PNGについて
http://homepage2.nifty.com/sophia0/png.html

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6