Java 程序旋转图像
图像文件可以顺时针或逆时针旋转。要旋转图像,需要下载随机图像文件并将其保存在系统上的任何文件夹中。此外,在打开下载的图像后,需要创建一个 .pdf 文件并将其旋转一定角度。对于 90 度旋转,新图像的锚点可帮助我们使用 Java 中的平移变换执行旋转操作。锚点是任何特定图像的中心。
使用 Java 旋转图像的算法
"AffineTransformOp"类是使用 Java 旋转图像文件的最简单方法。用户可以将图像数据加载为缓冲图像,并使用锚点应用旋转操作以生成新的缓冲图像以供下一步使用。始终建议使用 JDeli(具有广泛范围的文件类型)对 JPEG 文件进行这些操作。
要使用 Java 程序旋转图像,编码器可以使用一些内置方法,如 BufferedImage 类和 Color c。
使用此过程,我们需要将图像作为 BufferedImage 加载到 Java 中,然后使用相同函数旋转图像并将数据保存到新文件中。
现在,让我们讨论算法以广泛理解上述操作 -
步骤 1 - 图像读取和写入并导入到显示目录路径的文件类中。
步骤 2 - 使用 IOException:处理错误。
步骤 3 - 要保存特定图像,请使用名为 BufferedImage 的对象,这是一种将数据保存在RAM。
步骤 4 - 使用 ImageIO 运行读写操作。
步骤 5 - 使用 Graphics2D 类,渲染 2D 形状。
语法
代码声明:public static Image rotate(Image image, double angle)
根据此语法,需要了解一些步骤 -
参数 -
图像 - 执行旋转操作
角度 - 弧度旋转
返回 - 旋转后的图像文件
可以使用 Java 程序通过以下步骤旋转图像文件 -
步骤 1 - 在 Java 环境中将图像文件作为 BufferedImage 加载 在 Java 中加载图像文件 -
BufferedImage image = ImageIO.read(new File("C:\path\to\image name.jpg"));
步骤 2 - 将图像旋转 90 度
要将图像文件旋转 90 度,请按照以下代码进行操作 -
final double rads = Math.toRadians(90); final Rotate rotate = new Rotate(90); BufferedImage rotatedImage = rotate.apply(image);
步骤 3 − 保存图像文件
Use Java ImageIO ImageIO.write(rotatedImage,"JPG",newFile("C:\path\to\rotatedImagename.jpg"));
示例
import java.awt.*; import java.awt.image.BufferedImage; public class Main { public static Image rotate(Image image, double angle) { BufferedImage bufImg = toBufferedImage(image); double sin = Math.abs(Math.sin(angle)), cos = Math.abs(Math.cos(angle)); int w = bufImg.getWidth(), h = bufImg.getHeight(); int neww = (int) Math.floor(w * cos + h * sin), newh = (int) Math.floor(h * cos + w * sin); BufferedImage result = new BufferedImage(neww, newh, Transparency.TRANSLUCENT); Graphics2D g = result.createGraphics(); g.translate((neww - w) / 2, (newh - h) / 2); g.rotate(angle, w / 2, h / 2); g.drawRenderedImage(bufImg, null); g.dispose(); return result; } public static BufferedImage toBufferedImage(Image image) { if (image instanceof BufferedImage) { return (BufferedImage) image; } BufferedImage buff = new BufferedImage(image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_INT_ARGB); Graphics2D g = buff.createGraphics(); g.drawImage(image, 0, 0, null); g.dispose(); return buff; } }
使用 BufferedImage 函数旋转图像
通过使用 try-catch 阻塞方法,我们可以处理异常,因为它们可能会扰乱代码流程。
文档类 - 文档类主要用于呈现 pdf 文档。在此特定的 java 程序中,我们需要使用 ie.documentobj 函数创建一个文档类。此函数用于打开和关闭 pdf 文件。
PDF 编写器类 - 该函数支持 PDF、XML、RTF 文件生成,以对图像文件旋转进行编码。我们在此处使用的目录函数是 fileOutputStream(),用于处理 java 代码的文件。
输出函数 - output.pdf 是一个函数类,表示使用 Java 代码执行操作后的输出。此函数有助于获取所提供输入的输出。
函数 −
image class.imgage.scaleToFit() - 此函数可帮助我们在输入文件预设中设置大小。
imageobj.setRotationDegrees() - 编码器可以使用它来将图像旋转到某个角度。它可以用作我们使用的方法中的参数。
documentobj.open() - 此函数可帮助用户在操作时打开文件。
documentobj.close() - 要关闭 .pdf 文件,使用此函数。
示例
package JavaApplication29; import java.io.FileOutputStream; import com.itextpdf.text.Document; import com.itextpdf.text.Image; import com.itextpdf.text.PageSize; import com.itextpdf.text.pdf.PdfWriter; public class JavaApplication29 { public static void main(String[] args) { try { Document documentobj = new Document(PageSize.A4, 20, 20, 20, 20); PdfWriter.getInstance(documentobj, new FileOutputStream("output.pdf")); documentobj.open(); Image imageobj = Image.getInstance("C:\Users\lenovo\Desktop\RDD\Logo Org.jpg"); imageobj.scaleToFit(200f, 200f); imageobj.setRotationDegrees(90); documentobj.add(imageobj); documentobj.close(); System.out.println("Task completed"); } catch (Exception e) { System.out.println("Exception occurred"); } } }
输出
通过使用在程序中编码的可能方法,控制台显示尺寸和执行弹出窗口。旋转后会保存新图像。
结论
在本文中,上面讨论的过程有助于旋转图像文件。对于 90 度旋转,程序需要设置新图像,需要更改所有参数。由于锚点保持在图像的中心,顺时针和逆时针旋转的操作相同。