首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否有任何替代ImageIO.write来将缓冲区转换为GIF字节(比ImageIO更快)?

是否有任何替代ImageIO.write来将缓冲区转换为GIF字节(比ImageIO更快)?
EN

Stack Overflow用户
提问于 2022-10-27 18:07:58
回答 1查看 45关注 0票数 0

我的问题是,当使用imageio.write时,我看到的是使用hdd,也读到了有关jDeli (但太贵)、Apache的文章,它们都要快得多.

我想使用例程返回的编码字节..。在一个定制的远程桌面实用程序..。

代码语言:javascript
运行
复制
public static byte[] imageToJPEGByteArray(Image aImage, int width, int height, int qualityPercent) throws IOException {
 byte[] imageBytes = new byte[0];
 

   float quality = 75 / 100f;

   BufferedImage destImage;
   destImage = SwingFXUtils.fromFXImage(aImage, null);
 
   // Output JPEG byte array
   ByteArrayOutputStream baos = new ByteArrayOutputStream();
 
   if(qualityPercent != -1) {
       // Start to create JPEG with quality option
       ImageWriter writer = null;
       Iterator iter = ImageIO.getImageWritersByFormatName("gif");
       if (iter.hasNext()) {
         writer = (ImageWriter) iter.next();
       }
       ImageOutputStream ios = ImageIO.createImageOutputStream(baos);
       writer.setOutput(ios); 
       ImageWriteParam iwparam = new JPEGImageWriteParam(Locale.getDefault());
       iwparam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
       iwparam.setCompressionQuality(quality);
       writer.write(null, new IIOImage(destImage, null, null), iwparam);
       ios.flush();
       writer.dispose();
       ios.close();
       // Done creating JPEG with quality option
   } else {
       // This one line below created a JPEG file without quality option
       ImageIO.write(destImage, "gif", baos);
   }
 
   baos.flush();
   imageBytes = baos.toByteArray();
   baos.close();
 
   // Done
   return imageBytes; 
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-28 12:23:10

如果您已经观察到这段代码在保存到ByteArrayOutputStream时会导致磁盘活动,那么也许您应该尝试将ImageIO“使用缓存”标志设置为false

代码语言:javascript
运行
复制
ImageIO.setUseCache(false);

setUseCache的Javadoc说:

设置一个标志,指示在创建ImageInputStream和ImageOutputStreams.

时是否应该使用基于磁盘的缓存文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74226509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档