public static List<BitmapPiece> getSquarePieces(Bitmap bitmap,int x) {
List<BitmapPiece> pieces = new ArrayList<>(x*x);
int width = bitmap.getWidth() > bitmap.getHeight() ? bitmap.getHeight() : bitmap.getWidth();
int pieceWidth = width / x;
pwidth = width;
for (int i=0; i<x; i++) {
for (int j=0; j<x; j++) {
BitmapPiece temp = new BitmapPiece();
temp.index = i * x + i ;
// 开始裁剪的 xy 位置
int xBegin = j * pieceWidth;
int yBegin = i * pieceWidth;
temp.bitmap = Bitmap.createBitmap(bitmap,xBegin,yBegin,pieceWidth,pieceWidth);
pieces.add(temp);
}
}
return pieces;
}
我想把一张图片,平均切割成 N*N 份,而且是等宽高的,以上是我的代码,
然后发现图片切割出来变得很奇怪。有的是长宽不等。。。
。。。什么原因呀。。。
我开始也是怀疑代码有问题,但是我 Log 一下,Debeg 一下,
所以的 xBegin, yBegin, pieceWidth 都正常 。。。。
这下子纳闷了。。。。
我已经找到 bug .... 了
原来的问题:把一张图片裁剪成很多份,长宽相等,显示3×3九宫格,然后发现某些图片的显示,长宽不等。昨天睡觉的时候,想到了。。。和屏幕的宽度,图片裁剪后的宽度有关。
原因:代码中是取出图片的长宽最小值,去除以3,得出边长,然后裁剪,这样出来的 Bitmap ,因为一行的图片有3张,有可能,其边长的3bei比屏幕的宽度还要大!然后就显示不全了,长宽不等。
解决:裁剪出来后,我判断 : 边长的3倍是否 大于 屏幕的宽度,如果是,就压缩!
。。。然后OK了。。。
打一下log,看看出来的xbegin,ybegin是否合理,裁剪出来的图片有多少个不合理的,有没有合理的