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

相关推荐
空空kkk19 小时前
SSM项目练习——hami音乐(二)
java
闻哥19 小时前
深入理解 ES 词库与 Lucene 倒排索引底层实现
java·大数据·jvm·elasticsearch·面试·springboot·lucene
19 小时前
java关于引用
java·开发语言
弹简特19 小时前
【JavaEE04-后端部分】Maven 小介绍:Java 开发的构建利器基础
java·maven
计算机毕设指导620 小时前
基于微信小程序的智能停车场管理系统【源码文末联系】
java·spring boot·微信小程序·小程序·tomcat·maven·intellij-idea
码云数智-大飞20 小时前
零拷贝 IPC:用内存映射文件打造 .NET 高性能进程间通信队列
java·开发语言·网络
懈尘20 小时前
深入理解Java的HashMap扩容机制
java·开发语言·数据结构
indexsunny20 小时前
互联网大厂Java面试实战:从Spring Boot到Kafka的技术与业务场景解析
java·spring boot·redis·面试·kafka·技术栈·microservices
roman_日积跬步-终至千里20 小时前
【Java并发】Tomcat 与 Spring:后端项目中的线程与资源管理
java·spring·tomcat
独自破碎E20 小时前
IDEA 提示“未配置SpringBoot配置注解处理器“的解决方案
java·spring boot·intellij-idea