java 图片处理 Graphics2D GraphicsMagick 避免oom

GraphicsMagick 号称图像处理领域的瑞士军刀。GraphicsMagick 是个图片处理库,是从ImageMagick 5.5.2分支出来。

Graphics2D是JDK 自带的一套图片处理库。但性能一般。

Java 方面也提供了类似 JNI 方式支持 GraphicsMagick+im4java 处理图像。

但OpenCV,原生态支持 OpenCV就比较繁琐,要用 JNI 方式调用大量动态或静态库,存在如下两个问题:1.性能问题,2.出现内存问题也不好控制。

目前市面上成熟的图像处理库:GraphicsMagick 和 OpenCV。两款都可以做到跨平台,在多种编译器上执行,多进程模式,充分发挥多核 CPU 的优势。OpenCV 在 Python 中应用广泛。

选择GraphicsMagick还是Graphics2D?性能好的不一定最好,合适自己的才是最好。如果项目只需要完成基本功能,没有高并发的图片处理场景,当然是使用Graphics2D ,实现简单早下班。

官网:

GraphicsMagick Image Processing System

Graphics2D中BufferedImage 内存溢出(OOM),换成ImageReader

通过BufferedImage获取宽高。

java 复制代码
    // 图片信息
    BufferedImage img = ImageIO.read(new File(srcImgPath));

通过ImageReader获取宽高

java 复制代码
  int[] size = new int[2];
  try (ImageInputStream in = ImageIO.createImageInputStream(new File(imgPath))) {
    Iterator<ImageReader> readers = ImageIO.getImageReaders(in);
    if (readers.hasNext()) {
      ImageReader reader = readers.next();
    }
  }

详细使用:

GraphicsMagick之实践出真知 - 知乎

相关推荐
别动我齐刘海40 分钟前
C++ 工程化学习
java·linux·前端·c++·学习·机器学习·机器人
code2cat2 小时前
Java进阶篇之AtomicLongFieldUpdater:把累计额度留在对象字段中
java·cas·并发编程
WeiXin_DZbishe2 小时前
基于springboot城市公交实时运营与调度系统-计算机毕设 附源码【课程设计】66173
java·vue.js·spring boot·后端·python·php·课程设计
泡茶喝茶写代码2 小时前
A股量化数据工程:从 REST 接口到策略信号(第 18 篇):放量缩量异动扫描
java·python·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
wewowilling2 小时前
认识微服务
java·运维·微服务·springcloud
代码什么用3 小时前
Java Web 7-10
java·servlet
蜗牛互联网4 小时前
GPT-6 与 Intelligent UI:从回答到可审计操作的产品迁移
java·人工智能·后端
SL_staff5 小时前
运维救火实录:钉钉考勤API变更引发工资计算异常,我们用JVS-Logic可视化逻辑引擎实现分钟级热修复
java·mysql·全栈
SunnyDays10115 小时前
Java 查找并高亮 Word 文字:精确查找及正则表达式模糊查找
java·查找文字·word 文档·高亮文字·正则匹配查找·模糊查找