代码之家  ›  专栏  ›  技术社区  ›  Robert Munteanu

使用ImageIO读取JCS ycck图像

  •  1
  • Robert Munteanu  · 技术社区  · 15 年前

    我在用 ImageIO.read 处理上载的图像文件。代码类似于

    BufferedImage bufferedImage = ImageIO.read(new ByteArrayInputStream(image.getContents()));
    

    我已经设法解决了大部分问题,但这件事让我一无所知。上载的图像具有 JCS_YCCK 配置文件,定义见 com.sun.imageio.plugins.jpeg.JPEG ,不支持 com.sun.imageio.plugins.jpeg.JPEGImageReader . 这会导致一个很好的堆栈跟踪,类似于:

    Caused by: javax.imageio.IIOException: Unsupported Image Type
        at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(JPEGImageReader.java:910)
        at com.sun.imageio.plugins.jpeg.JPEGImageReader.read(JPEGImageReader.java:885)
        at javax.imageio.ImageIO.read(ImageIO.java:1422)
        at javax.imageio.ImageIO.read(ImageIO.java:1326)
        at com.example.ImageWriter.resizeEmbeddableImageInPlace(ImageWriter.java:231)
    

    如何使用Java的IMAIO处理这种类型的JPEG?


    更新 :我已经尝试过Commons Sanselan(由答案指示),但不幸的是它不支持jpeg文件:

    org.apache.sanselan.ImageReadException: Sanselan cannot read or write JPEG images.
        at org.apache.sanselan.formats.jpeg.JpegImageParser.getBufferedImage(JpegImageParser.java:90)
        at org.apache.sanselan.Sanselan.getBufferedImage(Sanselan.java:1264)
        at org.apache.sanselan.Sanselan.getBufferedImage(Sanselan.java:1231)
    
    2 回复  |  直到 15 年前
        1
  •  0
  •   Community CDub    8 年前

    一种可能的解决方案是使用Java高级成像图像IO扩展。如果安装正确,转换就可以开箱即用。

    问题是它和马文打得不好,所以我问过 Using Java Advanced Imaging with Maven . 如果这个结果成立,这个答案将被接受。

        2
  •  -1
  •   Valentin Rocher    15 年前

    我不知道图像,但你可以用 Commons Sanselan library 它提供了访问各种图像的简单方法。