ImageIO无法读取某些图像。

3

我有以下问题。 我们有一个上传图片的Web服务。当您尝试上传某些图片时,它会失败。这些图片具有正确的MIMETYPE,它们不是CMYK(至少GIMP说它们在RGB中)。 抛出的异常是:“不支持的图像类型”! 问题发生在尝试启动此命令时:

BufferedImage img = ImageIO.read(new ByteArrayInputStream(image.getData()));

我深入研究了一下,发现真正的异常出现在ImageIO.read(ImageInputStream stream),当它尝试再次关闭流时!

public static BufferedImage read(ImageInputStream stream)
    throws IOException {
    if (stream == null) {
        throw new IllegalArgumentException("stream == null!");
    }

    Iterator iter = getImageReaders(stream);
    if (!iter.hasNext()) {
        return null;
    }

    ImageReader reader = (ImageReader)iter.next();
    ImageReadParam param = reader.getDefaultReadParam();
    reader.setInput(stream, true, true);
    BufferedImage bi;
    try {
        bi = reader.read(0, param);
    } finally {
        reader.dispose();
        stream.close();
    }
    return bi;
}

一个抛出异常的图片示例是这样的:
Image that crashes

我希望有人能帮我找出为什么会崩溃以及如何修复它!


抛出了什么异常? - lost
抱歉,我忘了:抛出的异常是:“不支持的图像类型”! - DonMarco
我这里没有任何工具来进一步检查您的JPEG文件,但至少Java JPEG解码器认为该图像是CMYK编码的,因此不支持。 - jarnbjo
1个回答

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接