Java2D を使用して、Web サイトにアップロードされた写真のサイズを変更していますが、問題が発生しました (一見古い問題、参照: http://forums.sun.com/thread.jspa?threadID=5425569 ) - いくつかの特定の JPEGバイナリデータを含む InputStreamCMMException
を試みると、 aが発生します。ImageIO.read()
java.awt.color.CMMException: Invalid image format
at sun.awt.color.CMM.checkStatus(CMM.java:131)
at sun.awt.color.ICC_Transform.<init>(ICC_Transform.java:89)
at java.awt.image.ColorConvertOp.filter(ColorConvertOp.java:516)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.acceptPixels(JPEGImageReader.java:1114)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.readImage(Native Method)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(JPEGImageReader.java:1082)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.read(JPEGImageReader.java:897)
at javax.imageio.ImageIO.read(ImageIO.java:1422)
at javax.imageio.ImageIO.read(ImageIO.java:1326)
...
ImageIO.read()
(呼び出し、サーブレット コードなどであるスタック トレースの残りの部分を切り取りました)
特定のカメラで撮影した写真に絞り込み、このエラーをトリガーする写真を選択しました: http://img214.imageshack.us/img214/5121/estacaosp.jpg . これは Sun の JVM でのみ発生することに気付きました (Linux および Mac では、1.6.0_20 でテストしたところです)。OpenJDK を使用したテスト マシンは、おそらく JPEG リーダーの実装が異なるため、問題なく同じ写真を読み取ります。
残念ながら、本番環境で JVM を切り替えることも、ImageMagick ( http://www.imagemagick.org/ )などのネイティブに依存するソリューションを使用することもできません。
それを考慮して、私の質問は次のとおりです。リンクされたような写真を処理できる ImageIOs JPEG リーダーの代替品は存在しますか? そうでない場合、使用できる 100% 純粋な Java の写真のサイズ変更ソリューションは他にありますか?
ありがとうございました!