当前位置: 首页 > 知识库问答 >
问题:

Java ImageIO IIOException:不支持的映像类型?ImageIO无法读取CMYK编码的图像

武骁
2023-03-14

如果图像不是RGB颜色,如何解码。它应该通过支持所有格式(Jpg、Png、Gif等)来解码图像,任何api都可以解码。

这是失败的代码行。那么可以使用哪种方法来重新处理这个问题。

BufferedImage imgSelected = ImageIO.read(new File("/abs/url/to/file/image.jpg"));

共有1个答案

魏威
2023-03-14

您可以在此处找到答案:https://stackoverflow.com/a/2408779/3603806

上面写着:

将CMYK图像读入RGB BufferedImage。

File f = new File("/path/imagefile.jpg");

//Find a suitable ImageReader
Iterator readers = ImageIO.getImageReadersByFormatName("JPEG");
ImageReader reader = null;
while(readers.hasNext()) {
    reader = (ImageReader)readers.next();
    if(reader.canReadRaster()) {
        break;
    }
}

//Stream the image file (the original CMYK image)
ImageInputStream input =   ImageIO.createImageInputStream(f); 
reader.setInput(input); 

//Read the image raster
Raster raster = reader.readRaster(0, null); 

//Create a new RGB image
BufferedImage bi = new BufferedImage(raster.getWidth(), raster.getHeight(), 
BufferedImage.TYPE_4BYTE_ABGR); 

//Fill the new image with the old raster
bi.getRaster().setRect(raster);
 类似资料:
  • 问题内容: 第一次使用Java处理图片,并且遇到了一些未得到很好记录的怪异异常。这是失败的代码行: 此行将抛出带有 不支持的图像类型 的IIOException 作为异常消息。我检查并重新检查了这行实际上是否引发了异常,File对象有效,URL有效以及实际上是有效的JPG,该JPG在其他图像查看器中完全可以正常加载。 我应该怎么做才能获得有关此异常性质的更多信息?这是在Java 7中加载图像的传统

  • 问题内容: 给定一些源文件(或更通用的输入流),我需要找出 它是图像吗 如果它是图像,则检索其类型(png / jpeg / gif / etc) 检索exif数据(如果有) 我看了看API,但尚不清楚如何获取图像或Exif数据的类型。 问题答案: 几年前,我上一次不得不这样做时,标准API无法读取EXIF数据。该库可以这样做: http://www.drewnoakes.com/code/exi

  • 问题内容: 首先,我想解释一下导致这个问题的情况/要求: 在我们的Web应用程序中,由于IE 8及更低版本无法显示它们,因此我们不支持CMYK图像(JPEG)。因此,我们需要检测何时有人要上传此类图像并拒绝它。 不幸的是,Java的ImageIO无法读取这些图像,或者使我无法获得检测到的色彩空间。通过调试,似乎在内部获得了颜色空间代码11(这意味着),但是我无法安全地访问该信息。 当向阅读器查询图

  • 问题内容: 我已经编写了一个程序来加密Netbeans中的图像。从Netbeans运行时,该程序运行良好,但是当我将其构建为.jar文件时,即使我将图像文件与.jar文件放在同一文件夹中,它也无法读取图像。 //加密 //加载/写入图片 问题答案: 目前尚不清楚以下哪个触发您的错误。这个 将从当前目录读取,该目录不一定与您的jar文件所在的目录相同。 这个 将从类所在的jar文件中的目录中读取。请

  • 我有一段代码,可以使用ImageIO将字节数组转换为BuffereImage。 但我发现,对于某些jpeg图像,每次都会抛出CMM异常。 这是堆栈跟踪: 我在Google上搜索了一个解决方案,发现了一个帖子承认了这个问题,并建议在ImageIO失败的情况下使用JAI。但我有疑问,因为这篇帖子是4年前的,我似乎找不到太多关于JAI的信息,这让我相信这不是理想的解决方案。有没有其他方法可以在没有Ima

  • 执行javax。图像IO。ImageIO是否读取PPM格式的图像(如原始比特P6)? 没有异常,但是。其他格式如png和jpg工作正常。 我有一个尴尬的解决方法,通过去掉标头并逐行扫描ppm文件。我假设JAVA JAI(现在是JDK的一部分)会开箱即用。 我错过什么了吗?