当前位置:首页 > Java

java如何切割图片

2026-03-23 16:14:22Java

使用 Java 切割图片的方法

使用 BufferedImageGraphics2D

通过 BufferedImageGraphics2D 可以手动切割图片。以下是一个示例代码:

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

public class ImageCutter {
    public static void cropImage(String inputPath, String outputPath, int x, int y, int width, int height) throws Exception {
        BufferedImage originalImage = ImageIO.read(new File(inputPath));
        BufferedImage croppedImage = originalImage.getSubimage(x, y, width, height);
        ImageIO.write(croppedImage, "png", new File(outputPath));
    }

    public static void main(String[] args) {
        try {
            cropImage("input.png", "output.png", 100, 100, 200, 200);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

使用 Thumbnailator

Thumbnailator 是一个简化图片处理的库,可以方便地切割图片。首先添加依赖:

java如何切割图片

<dependency>
    <groupId>net.coobird</groupId>
    <artifactId>thumbnailator</artifactId>
    <version>0.4.8</version>
</dependency>

示例代码:

java如何切割图片

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

public class ThumbnailatorExample {
    public static void main(String[] args) throws Exception {
        Thumbnails.of("input.jpg")
            .sourceRegion(100, 100, 200, 200)
            .size(200, 200)
            .toFile("output.jpg");
    }
}

使用 JavaFXImageImageView

如果项目支持 JavaFX,可以使用 ImageImageView 进行图片切割:

import javafx.application.Application;
import javafx.embed.swing.SwingFXUtils;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.image.WritableImage;
import javafx.stage.Stage;
import javax.imageio.ImageIO;
import java.io.File;

public class JavaFXImageCutter extends Application {
    @Override
    public void start(Stage primaryStage) throws Exception {
        Image originalImage = new Image("file:input.png");
        ImageView imageView = new ImageView(originalImage);
        imageView.setViewport(new javafx.geometry.Rectangle2D(100, 100, 200, 200));
        WritableImage croppedImage = imageView.snapshot(null, null);
        ImageIO.write(SwingFXUtils.fromFXImage(croppedImage, null), "png", new File("output.png"));
    }

    public static void main(String[] args) {
        launch(args);
    }
}

使用 ImageMagick 的 Java 绑定

通过 im4javaJMagick 调用 ImageMagick 进行图片切割。以下是 im4java 的示例:

import org.im4java.core.ConvertCmd;
import org.im4java.core.IMOperation;

public class ImageMagickExample {
    public static void main(String[] args) throws Exception {
        IMOperation op = new IMOperation();
        op.addImage("input.jpg");
        op.crop(200, 200, 100, 100);
        op.addImage("output.jpg");
        ConvertCmd convert = new ConvertCmd();
        convert.run(op);
    }
}

注意事项

  • 确保切割区域的坐标和尺寸不超过原图的范围。
  • 处理大图片时注意内存占用,避免 OutOfMemoryError
  • 根据需求选择合适的图片格式(如 PNG、JPEG)。

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

相关文章

vue实现图片拖拽

vue实现图片拖拽

实现图片拖拽功能 在Vue中实现图片拖拽功能可以通过HTML5的拖放API结合Vue的事件处理来完成。以下是一个完整的实现方法: 基础拖拽实现 为图片元素添加draggable属性并绑定相关事件:…

如何学习java

如何学习java

学习Java的步骤 理解基础知识 从Java的基本语法开始,包括变量、数据类型、运算符、控制流(if-else、循环)等。掌握这些基础概念是后续学习的基石。 学习面向对象编程(OOP) Java是一…

java如何连接数据库

java如何连接数据库

Java连接数据库的方法 Java连接数据库通常使用JDBC(Java Database Connectivity)技术,以下是具体步骤和示例代码。 加载数据库驱动 在连接数据库之前,需要加载对应的…

如何安装java软件

如何安装java软件

下载Java安装包 访问Oracle官方网站或OpenJDK开源项目页面,选择适合操作系统的Java版本(如Windows、macOS或Linux)。对于个人使用,通常下载JDK(Java Devel…

java如何解决高并发

java如何解决高并发

Java 高并发解决方案 使用线程池优化资源管理 线程池(如 ThreadPoolExecutor)能避免频繁创建和销毁线程的开销。通过核心线程数、最大线程数和任务队列的合理配置,可以平衡系统负载。例…

react如何渲染图片

react如何渲染图片

在React中渲染图片的方法 使用<img>标签直接引入本地图片 将图片文件放入项目目录(如src/assets),通过相对路径引入。需注意Webpack可能需要配置file-loader…