java如何切图片
使用 Java 切分图片
Java 提供了多种方式切分图片,以下是几种常见的方法:

使用 BufferedImage 和 Graphics2D
BufferedImage 是 Java 中处理图片的核心类之一,结合 Graphics2D 可以方便地切分图片。

import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
public class ImageSplitter {
public static void splitImage(String inputImagePath, String outputDir, int rows, int cols) throws Exception {
File inputFile = new File(inputImagePath);
BufferedImage originalImage = ImageIO.read(inputFile);
int chunkWidth = originalImage.getWidth() / cols;
int chunkHeight = originalImage.getHeight() / rows;
int count = 0;
for (int x = 0; x < rows; x++) {
for (int y = 0; y < cols; y++) {
BufferedImage subImage = originalImage.getSubimage(
y * chunkWidth,
x * chunkHeight,
chunkWidth,
chunkHeight
);
File outputFile = new File(outputDir + "/img_" + count + ".jpg");
ImageIO.write(subImage, "jpg", outputFile);
count++;
}
}
}
}
使用 JavaFX 的 Image 和 ImageView
如果项目中已经引入了 JavaFX,可以使用 JavaFX 的 Image 和 ImageView 进行图片切分。
import javafx.embed.swing.SwingFXUtils;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
public class JavaFXImageSplitter {
public static void splitImage(String inputImagePath, String outputDir, int rows, int cols) throws Exception {
Image originalImage = new Image("file:" + inputImagePath);
int chunkWidth = (int) originalImage.getWidth() / cols;
int chunkHeight = (int) originalImage.getHeight() / rows;
int count = 0;
for (int x = 0; x < rows; x++) {
for (int y = 0; y < cols; y++) {
ImageView imageView = new ImageView(originalImage);
imageView.setViewport(new javafx.geometry.Rectangle2D(
y * chunkWidth,
x * chunkHeight,
chunkWidth,
chunkHeight
));
BufferedImage subImage = SwingFXUtils.fromFXImage(imageView.snapshot(null, null), null);
File outputFile = new File(outputDir + "/img_" + count + ".png");
ImageIO.write(subImage, "png", outputFile);
count++;
}
}
}
}
使用第三方库(如 Thumbnailator)
Thumbnailator 是一个简化图片处理的 Java 库,可以方便地进行图片切分。
import net.coobird.thumbnailator.Thumbnails;
import java.io.File;
import java.util.Arrays;
public class ThumbnailatorSplitter {
public static void splitImage(String inputImagePath, String outputDir, int rows, int cols) throws Exception {
Thumbnails.of(inputImagePath)
.size(cols, rows)
.toFiles(new File(outputDir), name -> new File(outputDir + "/img_" + name + ".jpg"));
}
}
注意事项
- 确保输入图片路径和输出目录存在且可读写。
- 切分后的图片格式(如 JPG、PNG)需根据实际需求选择。
- 切分时需注意图片的宽高是否能被行数和列数整除,否则可能导致切分不均匀。






