Java图像处理:库与代码示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Java图像处理:库与工具完全概览



Java提供了强大的位图图像处理工具——从简单的加载和保存到使用滤镜和神经网络的复杂处理。在本文中,我们将介绍三种主要方法:内置库Java 2D、专用库ImageJ以及工业标准OpenCV。您将了解如何选择合适的工具,并看到可运行的代码示例。



1. 内置库 Java 2D (javax.imageio, java.awt)



Java 2D 是 Java 标准库 (JDK) 的一部分。它无需安装额外依赖,非常适合基本操作:加载、调整大小、裁剪、文本叠加和简单滤镜。



主要类:

  • javax.imageio.ImageIO — 读取和写入图像(PNG、JPEG、BMP、GIF、WBMP)。
  • java.awt.image.BufferedImage — 内存中的图像表示,可访问像素。
  • java.awt.Graphics2D — 绘图上下文(缩放、旋转、叠加)。
  • java.awt.image.BufferedImageOp — 滤镜接口(模糊、对比度、色彩校正)。


示例 1:加载、调整大小和保存

import javax.imageio.ImageIO;import java.awt.*;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;

public class ImageResizer { public static void main(String[] args) throws IOException { // 加载原始图像 BufferedImage original = ImageIO.read(new File("input.jpg"));

// 新尺寸(例如,缩小到 300x200) int newWidth = 300; int newHeight = 200;

// 创建具有所需尺寸的新图像 BufferedImage resized = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_RGB); Graphics2D g2d = resized.createGraphics();

// 绘制缩放后的原始图像 g2d.drawImage(original, 0, 0, newWidth, newHeight, null); g2d.dispose();

// 保存结果 ImageIO.write(resized, "jpg", new File("output.jpg")); System.out.println("完成!尺寸已更改。"); }}


示例 2:应用内置滤镜(模糊)

import javax.imageio.ImageIO;import java.awt.image.BufferedImage;import java.awt.image.ConvolveOp;import java.awt.image.Kernel;import java.io.File;

public class BlurFilter { public static void main(String[] args) throws Exception { BufferedImage img = ImageIO.read(new File("input.jpg"));

// 3x3 模糊核(盒式模糊) float[] blurKernel = { 1f/9f, 1f/9f, 1f/9f, 1f/9f, 1f/9f, 1f/9f, 1f/9f, 1f/9f, 1f/9f }; Kernel kernel = new Kernel(3, 3, blurKernel); ConvolveOp convolve = new ConvolveOp(kernel, ConvolveOp.EDGE_NO_OP, null); BufferedImage blurred = convolve.filter(img, null);

ImageIO.write(blurred, "jpg", new File("blurred.jpg")); }}


2. ImageJ 库——用于科学和医学图像



ImageJ 是一个流行的图像处理工具,最初用 Java 编写。它提供数百个现成的插件、宏和强大的 API。非常适合显微分析、卫星图像以及任何需要像素统计的任务。



依赖配置 (Maven):

<dependency>    <groupId>net.imagej</groupId>    <artifactId>ij</artifactId>    <version>1.53t</version></dependency>


示例:直方图分析和阈值处理

import ij.IJ;import ij.ImagePlus;import ij.                    

推荐