java如何切割图片
使用 Java 切割图片的方法
使用 BufferedImage 和 Graphics2D
通过 BufferedImage 和 Graphics2D 可以手动切割图片。以下是一个示例代码:
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 是一个简化图片处理的库,可以方便地切割图片。首先添加依赖:
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.8</version>
</dependency>
示例代码:
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");
}
}
使用 JavaFX 的 Image 和 ImageView
如果项目支持 JavaFX,可以使用 Image 和 ImageView 进行图片切割:
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 绑定
通过 im4java 或 JMagick 调用 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)。






