当前位置:首页 > Java

java如何裁剪图片

2026-03-25 08:01:33Java

使用 Java 原生库裁剪图片

Java 提供了 BufferedImageGraphics2D 类用于图片裁剪。以下是核心代码示例:

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

public class ImageCropper {
    public static void cropImage(String srcPath, String destPath, int x, int y, int width, int height) throws Exception {
        BufferedImage originalImage = ImageIO.read(new File(srcPath));
        BufferedImage croppedImage = originalImage.getSubimage(x, y, width, height);
        ImageIO.write(croppedImage, "jpg", new File(destPath));
    }
}

调用示例:

cropImage("input.jpg", "output.jpg", 100, 100, 300, 300);  // 从(100,100)开始裁剪300x300区域

使用第三方库 Thumbnailator

Thumbnailator 库提供了更简洁的 API:

import net.coobird.thumbnailator.Thumbnails;

Thumbnails.of("original.jpg")
    .sourceRegion(100, 100, 300, 300)  // x,y,width,height
    .size(300, 300)  // 输出尺寸
    .toFile("cropped.jpg");

处理透明背景图片

当处理 PNG 等带透明通道的图片时,需要保留 alpha 通道:

java如何裁剪图片

BufferedImage original = ImageIO.read(new File("input.png"));
BufferedImage cropped = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Graphics2D g = cropped.createGraphics();
g.drawImage(original, 0, 0, width, height, x, y, x+width, y+height, null);
g.dispose();
ImageIO.write(cropped, "png", new File("output.png"));

异常处理建议

图片处理时应添加以下异常处理:

  • IllegalArgumentException:当裁剪区域超出原图范围时抛出
  • IOException:文件读写异常
  • NullPointerException:图片加载失败时可能抛出

性能优化方案

处理大图时可考虑:

java如何裁剪图片

  1. 使用 ImageIO.setUseCache(false) 禁用磁盘缓存

  2. 对 JPEG 图片指定压缩质量:

    JPEGImageWriteParam jpegParams = new JPEGImageWriteParam(null);
    jpegParams.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
    jpegParams.setCompressionQuality(0.9f);  // 0-1质量系数
  3. 批量处理时复用 BufferedImage 对象减少内存分配

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

相关文章

css网页制作漂浮图片

css网页制作漂浮图片

使用CSS实现漂浮图片效果 通过CSS的animation属性和@keyframes规则可以轻松实现图片漂浮效果。以下是几种常见实现方式: 基础漂浮动画 通过关键帧定义图片的垂直移动,模拟漂浮感:…

jquery 图片

jquery 图片

jQuery 图片操作 jQuery 提供了多种方法来操作图片,包括加载、显示、隐藏、调整尺寸等。以下是一些常见的图片操作方法: 动态加载图片 使用 attr() 方法可以动态修改图片的 src 属…

如何编译java文件

如何编译java文件

安装JDK 确保系统已安装Java Development Kit(JDK)。可通过命令行输入 javac -version 和 java -version 验证。若未安装,需从Oracle或Open…

java如何生成随机数

java如何生成随机数

生成随机数的方法 在Java中生成随机数可以通过多种方式实现,以下是几种常见的方法: 使用Math.random()方法 Math.random()方法返回一个double类型的伪随机数,范围在[0…

如何编译java

如何编译java

安装JDK 确保系统已安装Java Development Kit(JDK)。可通过命令行输入 javac -version 和 java -version 验证是否安装成功。若未安装,需从Oracl…

java如何运行程序

java如何运行程序

运行Java程序的步骤 安装Java开发工具包(JDK) 确保系统已安装JDK,可通过命令行输入java -version和javac -version验证。若未安装,需从Oracle官网下载并配置环…