ImageIO无法读取某些图像

时间:2012-08-21 09:04:44

标签: java image javax.imageio

我有以下问题。 我们有一个带图像上传功能的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

我希望有人可以帮助我弄清楚,为什么会崩溃以及如何解决它!

1 个答案:

答案 0 :(得分:2)

附图中有CMYK颜色模型。尝试将其转换为RGB。

这个问题很有用:How to convert from CMYK to RGB in Java correctly?