当前位置:首页 > Java

java 如何旋转图片

2026-02-05 07:32:11Java

旋转图片的方法

在Java中旋转图片可以通过多种方式实现,以下是几种常见的方法:

java 如何旋转图片

使用AffineTransformGraphics2D

Java的Graphics2D类结合AffineTransform可以实现图片旋转。以下是一个示例代码:

java 如何旋转图片

import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;

public class ImageRotator {
    public static BufferedImage rotateImage(BufferedImage image, double angle) {
        double radians = Math.toRadians(angle);
        double sin = Math.abs(Math.sin(radians));
        double cos = Math.abs(Math.cos(radians));
        int newWidth = (int) Math.round(image.getWidth() * cos + image.getHeight() * sin);
        int newHeight = (int) Math.round(image.getHeight() * cos + image.getWidth() * sin);

        BufferedImage rotated = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_ARGB);
        Graphics2D g2d = rotated.createGraphics();
        AffineTransform transform = new AffineTransform();
        transform.translate((newWidth - image.getWidth()) / 2, (newHeight - image.getHeight()) / 2);
        transform.rotate(radians, image.getWidth() / 2, image.getHeight() / 2);
        g2d.setTransform(transform);
        g2d.drawImage(image, 0, 0, null);
        g2d.dispose();
        return rotated;
    }

    public static void main(String[] args) throws Exception {
        BufferedImage original = ImageIO.read(new File("input.jpg"));
        BufferedImage rotated = rotateImage(original, 45);
        ImageIO.write(rotated, "jpg", new File("output.jpg"));
    }
}

使用Thumbnailator

Thumbnailator是一个简化图像处理的库,可以轻松实现旋转功能:

import net.coobird.thumbnailator.Thumbnails;
import java.io.File;

public class ThumbnailatorRotate {
    public static void main(String[] args) throws Exception {
        Thumbnails.of(new File("input.jpg"))
            .scale(1)
            .rotate(90)
            .toFile(new File("output.jpg"));
    }
}

使用OpenCV

如果项目已集成OpenCV,可以使用其旋转功能:

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

public class OpenCVRotate {
    public static void main(String[] args) {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        Mat src = Imgcodecs.imread("input.jpg");
        Mat dst = new Mat();
        Mat rotationMatrix = Imgproc.getRotationMatrix2D(
            new org.opencv.core.Point(src.cols()/2, src.rows()/2), 45, 1);
        Imgproc.warpAffine(src, dst, rotationMatrix, src.size());
        Imgcodecs.imwrite("output.jpg", dst);
    }
}

注意事项

  • 旋转角度以度为单位,顺时针方向为正方向。
  • 旋转后图片尺寸可能会变化,需要计算新尺寸以避免裁剪。
  • 对于大图片,注意内存消耗和处理时间。
  • 某些格式(如JPEG)旋转可能导致质量损失,建议使用无损格式(如PNG)进行处理。

标签: 图片java
分享给朋友:

相关文章

vue实现图片打点

vue实现图片打点

实现图片打点的基本思路 图片打点功能通常指在图片上添加可交互的标记点,点击或悬停时显示相关信息。Vue实现该功能需要结合DOM操作和事件监听。 核心步骤 准备图片和容器 在Vue组件中设置一个相对定…

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div cl…

java如何使用

java如何使用

Java 基本使用方法 Java 是一种广泛使用的编程语言,适用于开发各种类型的应用程序。以下是 Java 的基本使用方法,包括环境配置、语法基础和常用操作。 安装 Java 开发环境 下载并安装…

java如何打开

java如何打开

安装Java开发环境 下载并安装Java Development Kit (JDK),推荐从Oracle官网或OpenJDK获取最新版本。安装完成后配置环境变量,确保JAVA_HOME和PATH变量正…

vue 实现图片

vue 实现图片

Vue 实现图片加载与展示的方法 在 Vue 中实现图片加载和展示可以通过多种方式完成,包括静态资源引用、动态绑定、懒加载等。以下是几种常见的方法: 静态资源引用 将图片放在项目的 public 或…

java程序如何运行

java程序如何运行

编写Java代码 使用文本编辑器或IDE(如IntelliJ IDEA、Eclipse)编写Java源代码,保存为.java文件。例如: public class HelloWorld {…