Java 中的图像处理 - 改变图像方向

2025年1月7日 | 5 分钟阅读

数字图像分析和计算机视觉都严重依赖于图像处理。 这需要对图像进行修改才能获得预期的结果。Java 拥有许多强大且功能丰富的库,使用它们,我们可以对图像进行操作。

图像方向的修改是一项普遍的操作。改变图像方向意味着将图像旋转到任何需要的角度或进行翻转。本文将介绍如何使用 Java 内置库来实现这一点。

前提条件

在我们深入探讨概念之前,需要具备以下先决条件。

JDK: 您的 PC 或系统必须安装 JDK。如果尚未安装,您可以从 Oracle 官方网站轻松下载。

IDE: 到目前为止,市面上有许多不同的 IDE。您可以使用其中任何一个。

ImageIO 库: 必须导入 javax.imageio 包,因为它包含 ImageIO 类,该类帮助我们读取或写入图像文件。

让我们开始旋转图像。

旋转图像

此方法以 90、180 和 270 度等角度旋转图像。

文件名:ImageRotation.java

输入图像

Image Processing in Java-Changing Orientation of an Image

输出

 
C:\Users\deeks\OneDrive\Desktop\java>javac ImageRotation.java
C:\Users\deeks\OneDrive\Desktop\java>java ImageRotation
The image rotated successfully.   

输出图像

Image Processing in Java-Changing Orientation of an Image

解释

BufferedImage: 它将包含图像数据。

Graphics2D: 该类用于渲染 2D 形状或图像。此类位于 java.awt 包下。

AffineTransform: 该类负责旋转等几何变换。

rotateImage 方法: 一个方法,接受原始图像和角度,然后输出旋转了该角度的图像。

ImageIO: 这是一个提供读取和写入图像方法的类。

翻转图像

图像可以水平或垂直翻转。以下代码将翻转图像。

文件名:ImageFlipping.java

输入图像

Image Processing in Java-Changing Orientation of an Image

输出

 
C:\Users\deeks\OneDrive\Desktop\java>javac ImageFlipping.java
C:\Users\deeks\OneDrive\Desktop\java>java ImageFlipping
The image flipped successfully.   

输出图像

Image Processing in Java-Changing Orientation of an Image

解释

FlipImage: 一个方法,接受原始图像和一个布尔值(用于指示是水平翻转还是垂直翻转)作为参数,并返回翻转后的图像。

AffineTransform: 翻转基于 x 轴或 y 轴上的缩放量。对于水平翻转,我们将 x 轴缩放 -1,然后根据宽度进行平移。同样,对于垂直翻转,我们将 y 轴缩放 -1,然后根据高度进行平移。

高级旋转技术

任意旋转图像

下面是如何使用任意角度旋转图像的示例

解释

Sin 和 Cos 计算: 当我们以任意角度旋转时,旋转后图像的边界框大小可能会增加。正弦和余弦的计算有助于确定新的宽度和高度。

平移: 我们平移图像,以便旋转实际上是围绕其中心而不是原点进行的。

AffineTransform: 它允许在正确放置和对齐图像的同时,进行图像平移和旋转的组合。

高级翻转技术

简单来说,翻转图像就是相对于给定轴改变方向。虽然基本操作假定是水平或垂直翻转,但前者可以组合以产生对角线翻转。

对角线翻转

可以通过先进行水平翻转,然后进行垂直翻转来执行对角线翻转

解释

水平翻转: 这是用于对图像进行水平翻转的初始操作。

垂直翻转: 下一个操作是为图像进行对角线翻转。

结论

在本节中,我们简要了解了 Java 中的图像处理,特别是图像方向的处理。我们涵盖了两个主要操作:旋转和翻转。您可以使用 Java 的 ImageIO、Graphics2D 和 AffineTransform 等库轻松完成所有图像操作,以获得任何所需的图像方向。

这些简单的操作可以作为更高级图像处理的基础。您在 Java 中处理图像处理的经验越多,就能发现越来越多的复杂变换、滤波和各种分析技术,以增强您项目的潜力。