画像のサムネイルを作る仕組みを作っているのですが、
特定の画像の処理がおかしかったりエラーになったりと
色々な問題が起きて困っています。
(参考)http://q.hatena.ne.jp/1202624270
そこで、「このライブラリを使えばいい」とか
「Javaでないこのアプリケーションを呼んだほうがいい」とかいった
総合的な視点からのアドバイスをお願いします。
できるだけ具体的なほうが助かります。
アップロードされた瞬間にサムネイルを作る必要があり、
スピードも画質も捨てられないので、両者のバランスが取れた解決策を希望します。
画像の形式はJpegとGifですが、可能ならPngにも対応したいと思っています。
縦横比を維持して100×100ピクセルに収まるようにしたいです。
サーバのOSは現在windowsXPですが、Linuxにする予定です。
開発中の画面も置いておきます。
http://pettan.jp/makeStart.peta?comicID=112
下の画面で「ピクチャ」というボタンを押したときに出る
アップロードフォームでサムネイル作成をするつもりです。
足りない情報がありましたらご指摘ください。
よろしくお願いいたします。
こちらのページにサムネイル作成のスピードと画質に関する検証結果が掲載されています。
http://yusuke.homeip.net/diary/2006/02/09/1139476974993.html
参考になるかもしれません。
ご回答ありがとうございます。
Jpegはそのページを参考にして実装したんですが、時々
↓こんな風に灰色の部分ができてしまう画像があります。
http://pettan.jp/images/uploaded/662.jpg
Gifだとうまくいきませんし。
拡張子を見てGifと分岐するようにしてみたんですが、
(上記の http://q.hatena.ne.jp/1202624270 の方法で実装しました)
下記のようなエラーが一部の画像で出ます。
java.lang.IndexOutOfBoundsException: off < 0 || len < 0 || off+len > b.length || off+len < 0!
at javax.imageio.stream.FileCacheImageInputStream.read(FileCacheImageInputStream.java:151)
at com.sun.imageio.plugins.gif.GIFImageReader.getCode(GIFImageReader.java:306)
at com.sun.imageio.plugins.gif.GIFImageReader.read(GIFImageReader.java:881)
at javax.imageio.ImageIO.read(ImageIO.java:1422)
at javax.imageio.ImageIO.read(ImageIO.java:1326)
ユーザにあげてもらう画像を自動的にサムネイル化するので、
失敗する確率は限りなく0に近い状態でないと不味いんです。