Java 2D ImageIO.Write 阻碍性能

标签 java image performance 2d javax.imageio

我维护一个生成大量小部件的 Java 应用程序(我说小部件是因为它会生成 PDF 或 PNG 文件 - 到磁盘)。该应用程序旨在生成 PDF,后来图像成为必需。

我的每秒交易量 (TPS) 在生成图像时受到影响。基本流程是我创建一个 BufferedImage 和 Graphics2D 实例。使用 Graphics2D 对象绘制一些文本。我拉入了一些其他图像以添加到我的新图像中。然后我将 BufferedImage 写入 OutputStream。

我已经将 ImageIO.write() 方法视为可能的罪魁祸首。该应用程序是 RESTful 的,整个事务可能需要……比方说 500 毫秒。我已经记录了 ImageIO.write() 方法占用至少 80-90% 的事务时间。

ImageIO.write(image,"PNG",os);  // 420ms !!!!

我很难找到解决 ImageIO.write() 的方法...欢迎任何建议。

注意:图像是 RGB ColorModel && 最终大约 50kb。我已经看到二进制颜色模型的性能更好,但颜色是必需的。

最佳答案

只是为了备份 jonwilks 到 ObjectPlanet 的“PngEncoder”的链接——我们对其进行了测试并得到了类似的结果,比 ImageIO.write 提高了大约 30-50%,这非常棒——而且当你只使用二进制文件时它是免费的.推荐。

关于Java 2D ImageIO.Write 阻碍性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13941243/

相关文章:

java - 检查文件是否可以作为 BufferedImage 读取

windows - 防止繁重的进程沉入交换文件

python - 如何使用 Pandas concat 导入多个 csvs、分配变量并连接到一个 DataFrame 中?

image - 扭曲图像出现在圆柱投影中

android - 为什么 Android Eclipse 会不断刷新外部文件夹并花费很长时间?

java - 无法访问属性

java - 为不同环境构建包的最便捷方法是什么?

java - 从 HashSet 中删除连接到键的值?

java - 如何为带有搜索的 ListView 设置 onClickListener?不带立场

c# - 从 C# 中的一系列图像生成视频