通过使用java获取地图切片
主要为了腾讯地图
PictureCut.java
public class PictureCut {
/**
* @param srcImageFile 源图像地址
* @param descImageFile 切片目标文件夹
* @param cols 目标切片总共列数
* @param rows 目标切片总共行数
*/
public static void cut(File srcImageFile, String descImageFile, int cols, int rows) {
try {
// 读取源图像
BufferedImage bi = ImageIO.read(srcImageFile);
// 源图宽度
int srcWidth = bi.getWidth();
// 源图高度
int srcHeight = bi.getHeight();
Image image = bi.getScaledInstance(srcWidth, srcHeight, Image.SCALE_DEFAULT);
// 切片横向大小
int destWidth = (int) Math.floor(srcWidth / cols) + 1;
// 切片纵向大小
int destHeight = (int) Math.floor(srcHeight / rows) + 1;
// 计算切片的横向和纵向数量
Image img;
ImageFilter cropFilter;
// 循环建立切片
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
// 四个参数分别为图像起点坐标和宽高
cropFilter = new CropImageFilter(j * destWidth, i * destHeight,
(j + 1) * destWidth, (i + 1) * destHeight);
img = Toolkit.getDefaultToolkit().createImage(
new FilteredImageSource(image.getSource(), cropFilter));
BufferedImage tag = new BufferedImage(destWidth, destHeight,
BufferedImage.TYPE_INT_RGB);
Graphics g = tag.getGraphics();
g.drawImage(img, 0, 0, null); // 绘制缩小后的图
g.dispose();
// 输出为文件
ImageIO.write(tag, "JPEG", new File(descImageFile + i + j + "_" +
"pre_map_" + ".jpg"));
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* @param args
*/
public static void main(String[] args) {
// 即将要切片的图片地址
String tempFilePath = "D:/code-project/full-stack/CodeSameples/hanshansi/electronic-tour/public/ditu/pictureCut";
// /origin_fs02.jpg 图片名称
File fromFile = new File(tempFilePath + "/origin_fs02.jpg");
// 切出 6 * 6 个图片
// /cut-img-jpg 切完后的图片存放目录名
cut(fromFile,
tempFilePath + "/cut-img-jpg" + "/",
6, 6);
}
}

浙公网安备 33010602011771号