一个可以把方形图片切割复制为piece块的工具类。
public class ImageSplitterUtil {
/**
* @param bitmap
* @param piece
* 图片切成piece*piece块
* @return List<ImagePiece>
*/
public static List<ImagePiece> splitImage(Bitmap bitmap,int piece){
//存储要返回小图块的集合
List<ImagePiece> imagePieces=new ArrayList<ImagePiece>();
//获得原图片的宽高
int width=bitmap.getWidth();
int height=bitmap.getHeight();
//获得小图块的合适宽度
int pieceWidth=Math.min(width, height)/piece;
//利用双层for循环对图片分割复制,其中i代表横向,j代表纵向
for (int i = 0; i < piece; i++) {
for (int j = 0; j < piece; j++) {
//定义要获得的单个小图块
ImagePiece imagePiece=new ImagePiece();
//运用(j+i*piece)将二维数据降维得到一个一维的小标
imagePiece.setIndex(j+i*piece);
//获得小图块在原图中的起始x,y坐标
int x=j*pieceWidth;
int y=i*pieceWidth;
//利用Bitmap的creatBitmap方法,及双重循环实现Bitmap的分割复制
imagePiece.setBitmap(Bitmap.createBitmap(bitmap, x, y, pieceWidth, pieceWidth));
//把图块存入list集合
imagePieces.add(imagePiece);
}
}
//返回获得的小图块集合
return imagePieces;
}
}