Jhlabs图像处理

一、初衷

无奈JavaHutool工具都没有类似图像高斯模糊类的图像处理工具,本来打算用OpenCV开源图像库(需安装 OpenCV 本地库),别问为什么不用,自己去试一试你就知道了,偶然发现有更为简单的替代方案—Jhlabs

二、相关依赖

1
2
3
4
5
<dependency>
<groupId>com.jhlabs</groupId>
<artifactId>jhlabs-filters</artifactId>
<version>2.0.2</version>
</dependency>

三、相关例子

相关的过滤器还有:色彩调整滤镜(GrayscaleFilter - 转换为灰度,InvertFilter - 反转图像颜色…)、模糊和锐化滤镜(OilFilter - 油画效果,SharpenFilter - 简单锐化…)等等,具体地址参考:更多

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public static void main(String[] args) {
//读取文件
String img="图片路径(请自行替换)";
String outPutImg="输出的图片路径";
BufferedImage image = ImageIO.read(new File(img));

//高斯模糊:创建一个GaussianFilter对象,设置模糊半径
GaussianFilter filter = new GaussianFilter();
filter.setRadius(85);

//马赛克:创建一个BlockFilter对象,设置块大小
//BlockFilter filter=new BlockFilter();
//filter.setBlockSize(20);

//开始过滤图片
BufferedImage blurredImage = filter.filter(image, null);
// 保存模糊后的图像
ImageIO.write(blurredImage, imgSuffix, new File(outPutImg));
log.info("图片高斯模糊处理完成,保存路径:{}", outPutImg);
}

四、其他库对比

以下是一些常见的 Java 图像处理库,它们在效率和功能上都有不同的特点:

  1. Java Advanced Imaging (JAI): Java Advanced Imaging 是 Java 平台的官方图像处理库之一。它提供了丰富的图像处理功能,包括缩放、旋转、滤镜等。然而,由于它的开发在过去几年中没有得到活跃维护,有些开发者可能会选择其他库。
  2. JavaCV: JavaCV 是 OpenCV 的 Java 绑定,它提供了大量的计算机视觉和图像处理功能。由于它是 OpenCV 的绑定,因此可以访问 OpenCV 的强大功能。它的性能通常很高,因为底层使用了原生的 C/C++ 实现。JavaCV 的缺点之一是它的文档相对较少,但由于其强大的功能,它仍然是一个受欢迎的选择。
  3. Apache Commons Imaging: Apache Commons Imaging 是 Apache 软件基金会的一个项目,它提供了用于读写和处理各种图像格式的通用库。它相对较轻量,适用于简单的图像处理任务。然而,与 OpenCV 相比,它的功能可能相对较少。
  4. ImageJ: ImageJ 是一个用于科学图像处理和分析的开源库。它是用 Java 编写的,功能强大,适用于生物医学图像等领域。ImageJ 的插件架构使得可以方便地扩展功能。但是,对于一些简单的图像处理任务,它可能显得过于强大。

选择哪个库取决于你的具体需求。如果你需要进行计算机视觉或复杂的图像处理任务,JavaCV 是一个强大的选择。如果你只需要进行一些简单的图像处理,可能 Apache Commons Imaging 或者 ImageJ 更适合你,但是!我不选,用Jhlabs足以