来源:https://juejin.cn/post/7012100035814883336
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
public class SplitImg {
// 图片路径
private static final String IMAGE_FILE_PATH = "F:\\logs\\bf13a03f265a5f3c8d78deb5885e799.jpg";
//横向分隔个数
private static final int SEP_X_NUM = 3;
//纵向分隔个数
private static final int SEP_Y_NUM = 3;
public static void main(String[] args) throws Exception {
cutPic();
}
public static String cutPic() throws Exception {
File file = new File(IMAGE_FILE_PATH);
if (!file.exists() || !file.isFile()) {
throw new RuntimeException(" 图片不存在 :" + IMAGE_FILE_PATH);
}
BufferedImage image = ImageIO.read(file);
int totalWidth = image.getWidth();
int totalHeight = image.getHeight();
int width = totalWidth / SEP_X_NUM;
int height = totalHeight / SEP_Y_NUM;
// 处理后生成出来的图片存放目录
File dirFile = new File(file.getParent(), file.getName().substring(0, file.getName().lastIndexOf(".")));
if (!dirFile.exists()) {
dirFile.mkdir();
}
for (int y = 0, j = 1; y <= totalHeight - height; y += height, j++) {
for (int x = 0, i = 1; x <= totalWidth - width; x += width, i++) {
File targetFile = new File(dirFile, j + "_" + i + ".jpg");
BufferedImage targetImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics g = targetImage.getGraphics();
g.drawImage(image.getSubimage(x, y, width, height), 0, 0, null);
ImageIO.write(targetImage, "JPG", targetFile);
}
}
return dirFile.getPath();
}
}