小编use*_*933的帖子

在没有I/O的情况下将BufferedImage转换为byte []

嗨我在内存中有一个BufferedImage实例,并希望将其转换为byte []以编码为base64字符串而不进行I/O操作以提高性能.我使用以下API:

ByteArrayOutputStream baos = new ByteArrayOutputStream ();
ImageIO.write(image,"png",baos);
return baos.toByteArray();
Run Code Online (Sandbox Code Playgroud)

但是,此API仍隐式将映像写入OS临时目录,如果底层OS临时目录已满并且无法创建临时文件,则会导致失败.堆栈跟踪:

Caused by: java.io.IOException: No space left on device
    at java.io.RandomAccessFile.write(RandomAccessFile.java:493)
    at javax.imageio.stream.FileCacheImageOutputStream.write(FileCacheImageOutputStream.java:134)
    at javax.imageio.stream.ImageOutputStreamImpl.write(ImageOutputStreamImpl.java:66)
    at com.sun.imageio.plugins.png.PNGImageWriter.write_magic(PNGImageWriter.java:376)
    at com.sun.imageio.plugins.png.PNGImageWriter.write(PNGImageWriter.java:1115)
    at javax.imageio.ImageWriter.write(ImageWriter.java:628)
    at javax.imageio.ImageIO.write(ImageIO.java:1480)
    at javax.imageio.ImageIO.write(ImageIO.java:1554)
Run Code Online (Sandbox Code Playgroud)

在没有I/O的情况下进行转换是否有效(如内存转换或高效I/O)方式?请指教.

java bufferedimage in-memory javax.imageio

11
推荐指数
2
解决办法
3985
查看次数

标签 统计

bufferedimage ×1

in-memory ×1

java ×1

javax.imageio ×1