saitoha / libsixel

A SIXEL encoder/decoder implementation derived from kmiya's sixel (https://github.com/saitoha/sixel).
MIT License
2.49k stars 83 forks source link

img2sixel で images/snake-progressive.jpg を表示できない #24

Closed msmhrt closed 9 years ago

msmhrt commented 9 years ago

img2sixel で images/snake-progressive.jpg を表示しようとすると下記のエラーが表示されます。

$ img2sixel images/snake-progressive.jpg
stbi_load_from_file failed.
reason: progressive jpeg.
$

発生環境は、 https://github.com/saitoha/libsixel/issues/23 と同じです。 (すみません。上記の Issue で他の画像は問題ないと報告したのですが、見逃していたようです。)

以下は単なる案ですが、ヘッダの細かい違いの影響を避けるために画像データを raw 出力してから、その md5 を make check でチェックするようにすると良いのかもしれませんね。 (浮動小数点演算の精度とかが厄介かもしれませんが)

saitoha commented 9 years ago

これはもともと認識していた問題で、stb_imageという画像ローダーコンポーネントが、progressive jpegを読めないために起こります。 現時点での対策としては、以下のような方法があります。

1. libjpeg-devを入れて./configure --with-jpegでビルド
2. gdk-pixbuf2を入れて./configure --with-gdk-pixbuf2でビルド
3. gdを入れて./configure --with-gdでビルド

ただし、つい1ヶ月ほど前、stb_imageにprogressive jpegをサポートする修正が入っているので、 このIssueはstb_imageをupdateすることで解決しそうです。 それでもjpeg2000とかはまだstb_imageでは読めないですが。

msmhrt commented 9 years ago

そういうことだったんですね。

とりあえず、libjpeg-dev をインストールしたら、./configure が自動的に検出して images/snake-progressive.jpg が無事表示されるようになりました。

お手数おかけしました。m(__)m

saitoha commented 9 years ago

raw 出力で md5 チェックする件、検討してみます。 ご提案ありがとうございます。

saitoha commented 9 years ago

stb_imageをv2に更新したので、developブランチでlibjpegに依存せずにprogressive jpegが読めるようになったはずです。リリース的には1.5から入ると思います。

msmhrt commented 9 years ago

お、それは朗報ですね。

今は w3m で閲覧する際に release-1.4 ブランチを主に使っていますが、少し落ち着いたら develop ブランチも使うようにしたいと思います。

ちなみに、プログレッシブ JPEG 以外に、libjpeg を使うメリットって何かあるでしょうか? もしあるようでしたらドキュメントに書いてあるとユーザーが助かると思います。

saitoha commented 9 years ago

私もstb_imageで読めるものと読めないもの、libjpegのメリットを正確に把握できていないんですが、とりあえずstb_imageの但し書きを参考に、 manpage-img2sixel-imageformat ブランチで入力フォーマットについての追記を行いました(c7a4495d42ce2ba23a13a4d31b9fe0983e20bd48)。英語が相当怪しいですが。 あと自分で計測はしてないんですが、stb_imageのprogressive jpegのデコードは、現段階では相当遅いらしいです。

msmhrt commented 9 years ago

確認しました。stb_image の制限が分かったので助かります。

saitoha commented 9 years ago

v1.5をリリースしたので閉じます。

msmhrt commented 9 years ago

最近確認していなかったので念のため、master ブランチで --without-jpeg オプションつきでビルドして問題なきことを確認しました。

saitoha commented 9 years ago

ありがとうございます。