当前位置:首页 > Java

java如何旋转图片

2026-03-03 18:09:49Java

旋转图片的方法

在Java中,可以使用BufferedImageAffineTransform类来实现图片旋转。以下是一个完整的示例代码:

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 void rotateImage(String inputImagePath, String outputImagePath, double degrees) {
        try {
            // 读取输入图片
            BufferedImage inputImage = ImageIO.read(new File(inputImagePath));

            // 计算旋转后的图片尺寸
            double radians = Math.toRadians(degrees);
            double sin = Math.abs(Math.sin(radians));
            double cos = Math.abs(Math.cos(radians));
            int newWidth = (int) Math.round(inputImage.getWidth() * cos + inputImage.getHeight() * sin);
            int newHeight = (int) Math.round(inputImage.getHeight() * cos + inputImage.getWidth() * sin);

            // 创建新的BufferedImage
            BufferedImage outputImage = new BufferedImage(newWidth, newHeight, inputImage.getType());
            Graphics2D g2d = outputImage.createGraphics();

            // 设置旋转中心点并执行旋转
            AffineTransform transform = new AffineTransform();
            transform.translate((newWidth - inputImage.getWidth()) / 2, (newHeight - inputImage.getHeight()) / 2);
            transform.rotate(radians, inputImage.getWidth() / 2, inputImage.getHeight() / 2);

            // 绘制旋转后的图像
            g2d.setTransform(transform);
            g2d.drawImage(inputImage, 0, 0, null);
            g2d.dispose();

            // 保存旋转后的图片
            String formatName = outputImagePath.substring(outputImagePath.lastIndexOf(".") + 1);
            ImageIO.write(outputImage, formatName, new File(outputImagePath));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        rotateImage("input.jpg", "output.jpg", 45); // 旋转45度
    }
}

使用第三方库旋转图片

除了使用Java标准库,还可以使用第三方库如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) // 旋转90度
            .toFile(new File("output.jpg"));
    }
}

注意事项

旋转图片时需要考虑图片的原始宽高比,否则可能导致图片被裁剪或出现空白区域。对于非90度倍数的旋转,图片尺寸会发生变化,需要重新计算输出图片的尺寸。

java如何旋转图片

图片旋转操作会消耗较多内存,特别是处理大尺寸图片时,建议对图片进行适当压缩或分块处理。

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

相关文章

java前景如何

java前景如何

Java 当前的市场需求 Java 在企业级开发、大数据、云计算等领域仍占据重要地位。许多大型企业(如银行、电商平台)依赖 Java 构建后端系统。招聘平台数据显示,Java 开发岗位数量稳定,尤其在…

java如何实现异步

java如何实现异步

Java实现异步的方法 Java中实现异步编程可以通过多种方式,每种方式适用于不同的场景和需求。以下是常见的实现方法: 使用Thread类 创建新线程执行异步任务是最基础的方式。通过继承Thread…

java如何处理高并发

java如何处理高并发

Java处理高并发的方法 使用多线程和线程池 Java的java.util.concurrent包提供了线程池(如ThreadPoolExecutor)和并发工具类(如CountDownLatch、C…

vue实现添加图片

vue实现添加图片

使用 <input type="file"> 上传图片 通过 HTML 原生文件输入框获取用户选择的图片文件,结合 Vue 的 v-on 监听文件变化事件。 <template…

php 实现 java md5加密

php 实现 java md5加密

PHP 实现 Java MD5 加密 Java 和 PHP 的 MD5 加密结果可能存在差异,主要由于字符编码和输出格式的不同。以下是确保 PHP 与 Java MD5 加密结果一致的方法。 确保字…

如何用java编程

如何用java编程

Java编程基础指南 环境配置 安装Java开发工具包(JDK),推荐使用最新版本。配置环境变量,确保JAVA_HOME指向JDK安装路径,并将bin目录添加到系统PATH中。验证安装是否成功: j…