javax.imageio.imageio.Read(new bytearrayinputstream(data))在阅读字节数组映像数据时会引发实例异常

发布于 2025-02-01 14:46:03 字数 876 浏览 5 评论 0原文

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
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");
    }

The method ImageIO.read(bis) throws this exception:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

日裸衫吸 2025-02-08 14:46:04

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

实现将图像读取到bufferedimage我建议

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

您使用新图像,建议使用

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

注意
默认情况下,使用图像的许多功能使用磁盘存储用于缓存或TMP

If you application throw exception with message of SPI - java.util.ServiceLoader don't find library, for add library you must just choose and add dependency f.e. group: com.twelvemonkeys.imageio or another implementation

For reading image to BufferedImage i recommend use

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

if you need create new image i recommend use

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

ATTENTION
a lot of function for working with image use disk storage for cache or tmp by default

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文