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之实践出真知 - 知乎

相关推荐
pupudawang16 分钟前
Spring Boot 热部署
java·spring boot·后端
我登哥MVP18 分钟前
【SpringMVC笔记】 - 9 - 异常处理器
java·spring boot·spring·servlet·tomcat·maven
下地种菜小叶24 分钟前
Spring Boot 2.x 升级 3.x / 4.x 怎么做?一次讲清 JDK、Jakarta、依赖兼容与上线策略
java·spring boot·后端
iiiiyu25 分钟前
常用API(StringJoiner类 & Math类 & System类)
java·大数据·开发语言·数据结构·编程语言
有梦想的小何42 分钟前
`Java并发排障实录:没有报错,却把正确数据覆盖错了`
java·spring boot·mysql·spring cloud
Xiu Yan1 小时前
Java 转 C++ 系列:函数对象、谓词和内建函数对象
java·开发语言·c++
狠学嵌入式1 小时前
被WPS气晕,因此做了个免费的pdf与图片处理网站
图像处理·pdf·免费·pdf合并·pdf处理·免费工具网站
那个失眠的夜1 小时前
Spring整合Mybatis实现用户的CRUD
java·spring·mybatis
superantwmhsxx1 小时前
Spring Initializr创建springboot项目,提示java 错误 无效的源发行版:16
java·spring boot·spring
山河梧念1 小时前
【保姆级教程】VMware虚拟机安装全流程
android·java·数据库