Javaを使ったWebアプリで、ユーザのアップロードした

画像のサムネイルを作る仕組みを作っているのですが、
特定の画像の処理がおかしかったりエラーになったりと
色々な問題が起きて困っています。
(参考)http://q.hatena.ne.jp/1202624270

そこで、「このライブラリを使えばいい」とか
「Javaでないこのアプリケーションを呼んだほうがいい」とかいった
総合的な視点からのアドバイスをお願いします。
できるだけ具体的なほうが助かります。

アップロードされた瞬間にサムネイルを作る必要があり、
スピードも画質も捨てられないので、両者のバランスが取れた解決策を希望します。
画像の形式はJpegとGifですが、可能ならPngにも対応したいと思っています。
縦横比を維持して100×100ピクセルに収まるようにしたいです。
サーバのOSは現在windowsXPですが、Linuxにする予定です。

開発中の画面も置いておきます。
http://pettan.jp/makeStart.peta?comicID=112
下の画面で「ピクチャ」というボタンを押したときに出る
アップロードフォームでサムネイル作成をするつもりです。

足りない情報がありましたらご指摘ください。
よろしくお願いいたします。

回答の条件
  • 1人3回まで
  • 登録:
  • 終了:2008/02/19 20:03:40
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:yusukey No.1

回答回数73ベストアンサー獲得回数2

ポイント60pt

こちらのページにサムネイル作成のスピードと画質に関する検証結果が掲載されています。

http://yusuke.homeip.net/diary/2006/02/09/1139476974993.html

参考になるかもしれません。

id:hedachi

ご回答ありがとうございます。


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に近い状態でないと不味いんです。

2008/02/15 10:54:49
  • id:hedachi
    追記です。Png、Gifの縮小は、
    透過部分をそのまま透過させておけるものである必要があります。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません