首页 > 使用 Bitmap 裁剪图片。。。

使用 Bitmap 裁剪图片。。。

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是否合理,裁剪出来的图片有多少个不合理的,有没有合理的

【热门文章】
【热门文章】