java – 将BufferedImage转换为没有I / O的byte []
嗨,我在内存中有一个Buffered
Image实例,并希望将其转换为byte []以编码为base64字符串,而不需要I / O操作来执行性能考虑.我正在使用以下API:
ByteArrayOutputStream baos = new ByteArrayOutputStream (); ImageIO.write(image,"png",baos); return baos.toByteArray(); 但是,该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) 在没有I / O的情况下,是否有高效(如内存中转换或高效的I / O)方式进行转换?请指教. 解决方法
通过
ImageIO.setUseCache()方法禁用ImageIO缓存:
ImageIO.setUseCache(false); 默认情况下,它是根据javadoc:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |