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

相关推荐
Web打印4 分钟前
HttpPrinter web打印控件 官方文档(https://wiki.httpprinter.com/)快速检索目录
java·javascript·chrome
我登哥MVP4 分钟前
Spring Boot 从“会用”到“精通”:内容协商原理
java·spring boot·后端·spring·java-ee·maven·lua
cfm_29148 分钟前
Java JVM 零基础入门
java·jvm
兰令水9 分钟前
leecodecode【状态机DP】【2026.6.9打卡-java版本】
java·开发语言·算法
我是一颗柠檬10 分钟前
【Java项目技术亮点】接口限流熔断:从Sentinel到令牌桶/漏桶,手把手教你构建高可用服务防护体系
java·数据库·sentinel
宸津-代码粉碎机13 分钟前
Spring AI企业级实战|Agent长期记忆持久化落地,彻底解决多轮对话上下文丢失问题
java·开发语言·人工智能·后端·python·spring
开源推荐官17 分钟前
2026 商城系统源码实测,真正适合二开的系统有哪些?
java·架构·开源
云烟成雨TD17 分钟前
Spring AI 1.x 系列【58】提示词工程(Prompt Engineering)
java·人工智能·spring
總鑽風23 分钟前
[特殊字符] Spring AI Alibaba企业级智能助手落地实践
java·人工智能·spring
Flittly24 分钟前
【AgentScope Java新手村系列】(1)框架简介与环境搭建
java·spring boot·笔记·spring·ai