繁体   English   中英

javax.imageio.ImageIO.read(new ByteArrayInputStream(data)) 在读取字节数组图像数据时抛出实例化异常

[英]javax.imageio.ImageIO.read(new ByteArrayInputStream(data)) throws instantiation exception while reading byte array image data

public static void createImage2() {
        try {
            BufferedImage bImage = ImageIO.read(new File("input.jpg"));
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            ImageIO.write(bImage, "jpg", bos );
            byte [] data = bos.toByteArray();
            ByteArrayInputStream bis = new ByteArrayInputStream(data);
            BufferedImage bImage2 = ImageIO.read(bis);
            ImageIO.write(bImage2, "jpg", new File("output.jpg") );
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println("image created");
    }

ImageIO.read(bis)方法抛出此异常:

Exception in thread "main" java.util.ServiceConfigurationError: javax.imageio.spi.ImageReaderSpi: Provider com.aware.j2k.imageio.J2KImageReaderSpi could not be instantiated

如果您的应用程序抛出带有 SPI 消息的异常 - java.util.ServiceLoader 找不到库,对于添加库,您必须选择并添加依赖项 fe group: com.twelvemonkeys.imageio或其他实现

对于将图像读取到BufferedImage我建议使用

ImageIO.read(new MemoryCacheImageInputStream(new ByteArrayInputStream(file.getBytes())))

如果您需要创建新图像,我建议使用

ImageTypeSpecifier.createFromRenderedImage(source).createBufferedImage(width, height)

注意力
许多处理图像的功能默认使用磁盘存储作为缓存或 tmp

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM