6

dbから画像を取得した後、サイズを変更しようとすると、以下のコードを使用して幅を渡します

        public static BufferedImage resize(final byte[] pImageData,
                    final int width, final int height, final int maxLength, final int minLength, final String imageSubType) throws Exception {

                InputStream is = null;
                BufferedImage resizeImageJpg = null;
                try {

                    is = new ByteArrayInputStream(pImageData);
                    BufferedImage originalImage = ImageIO.read(is);
                     --------------------

    }
   }

行で次の例外がスローされます。

                    BufferedImage originalImage = ImageIO.read(is);

例外:

Caused by: 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:1169)
    at com.sun.imageio.plugins.jpeg.JPEGImageReader.readImage(Native Method)
    at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(JPEGImageReader.java:1137)
    at com.sun.imageio.plugins.jpeg.JPEGImageReader.read(JPEGImageReader.java:948)
    at javax.imageio.ImageIO.read(ImageIO.java:1422)
    at javax.imageio.ImageIO.read(ImageIO.java:1326)

このエラーが特定の画像に対してのみスローされる理由についてのアイデア。画像に何か問題がありますか。もしそうなら、考えられるエラーは何ですか

4

1 に答える 1

2

ところで、この CMMException の問題は JDK8 で修正されています ( http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7064516の下部にあるコミットに注意してください)。JDK8 のプレリリース ビルドが、上記のように JDK7 で失敗するイメージを適切にロードすることを確認しました。

于 2013-10-09T21:21:54.610 に答える