docs: public static void sliceByRowsAndCols(Image srcImage, File destDir, int rows, int cols) {
  		if (false == destDir.exists()) {
  			FileUtil.mkdir(destDir);
  		} else if (false == destDir.isDirectory()) {
  			throw new IllegalArgumentException("Destination Dir must be a Directory !");
  		}
  
  		try {
  			if (rows <= 0 || rows > 20) {
  				rows = 2; // 切片行数
  			}
  			if (cols <= 0 || cols > 20) {
  				cols = 2; // 切片列数
  			}
  			// 读取源图像
  			final BufferedImage bi = toBufferedImage(srcImage);
  			int srcWidth = bi.getWidth(); // 源图宽度
  			int srcHeight = bi.getHeight(); // 源图高度
  
  			int destWidth = NumberUtil.partValue(srcWidth, cols); // 每张切片的宽度
  			int destHeight = NumberUtil.partValue(srcHeight, rows); // 每张切片的高度
  
  			// 循环建立切片
  			BufferedImage tag;
  			for (int i = 0; i < rows; i++) {
  				for (int j = 0; j < cols; j++) {
  					tag = cut(bi, new Rectangle(j * destWidth, i * destHeight, destWidth, destHeight));
  					// 输出为文件
  					ImageIO.write(tag, IMAGE_TYPE_JPEG, new File(destDir, "_r" + i + "_c" + j + ".jpg"));
  				}
  			}
  		} catch (IOException e) {
  			throw new IORuntimeException(e);
  		}
  	}