Java 程序旋转图像

javaobject oriented programmingprogramming更新于 2024/8/26 20:12:00

图像文件可以顺时针或逆时针旋转。要旋转图像,需要下载随机图像文件并将其保存在系统上的任何文件夹中。此外,在打开下载的图像后,需要创建一个 .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 度旋转,程序需要设置新图像,需要更改所有参数。由于锚点保持在图像的中心,顺时针和逆时针旋转的操作相同。


相关文章