Android Bitmap删除白边

Android Bitmap删除白边,第1张

概述我有一个关于Android中位图的问题:我有一个带有白色边距[大小未知]的位图.是否可以创建一个删除了所有白色边距的新位图(矩形)?Bitmapbmp=Bitmap.createBitmap(width,bmpheigth,Config.ARGB_8888);Canvascanvas=newCanvas(bmp);canvas.setBitmap(bmp);canv

我有一个关于Android中位图的问题:我有一个带有白色边距[大小未知]的位图.是否可以创建一个删除了所有白色边距的新位图(矩形)?

Bitmap bmp = Bitmap.createBitmap(wIDth, bmpheigth, Config.ARGB_8888);    Canvas canvas = new Canvas(bmp);    canvas.setBitmap(bmp);    canvas.drawcolor(color.WHITE);// draw here things!

人们认为不知道绘画的地方.

有什么好办法呢?
谢谢!

解决方法:

谢谢@Maxim Efimov& @StackOverflowException

以防万一有人需要一个代码片段来解决这类问题:

此方法返回一个删除了边距的剪切较小的Bitmap.首先将像素传递给int数组,然后使用数组比Bitmap.getPixel方法快一点

只需调用指示源位图和背景颜色的方法.

Bitmap bmp2 = removemargins(bmp, color.WHITE);private static Bitmap removemargins2(Bitmap bmp, int color) {    // Todo auto-generated method stub    long dtMili = System.currentTimeMillis();    int Mtop = 0, MBot = 0, Mleft = 0, MRight = 0;    boolean found1 = false, found2 = false;    int[] bmpIn = new int[bmp.getWIDth() * bmp.getHeight()];    int[][] bmpInt = new int[bmp.getWIDth()][bmp.getHeight()];    bmp.getPixels(bmpIn, 0, bmp.getWIDth(), 0, 0, bmp.getWIDth(),            bmp.getHeight());    for (int ii = 0, contX = 0, contY = 0; ii < bmpIn.length; ii++) {        bmpInt[contX][contY] = bmpIn[ii];        contX++;        if (contX >= bmp.getWIDth()) {            contX = 0;            contY++;            if (contY >= bmp.getHeight()) {                break;            }        }    }    for (int hP = 0; hP < bmpInt[0].length && !found2; hP++) {        // looking for Mtop        for (int wP = 0; wP < bmpInt.length && !found2; wP++) {            if (bmpInt[wP][hP] != color) {                Log.e("Mtop 2", "Pixel found @" + hP);                Mtop = hP;                found2 = true;                break;            }        }    }    found2 = false;    for (int hP = bmpInt[0].length - 1; hP >= 0 && !found2; hP--) {        // looking for MBot        for (int wP = 0; wP < bmpInt.length && !found2; wP++) {            if (bmpInt[wP][hP] != color) {                Log.e("MBot 2", "Pixel found @" + hP);                MBot = bmp.getHeight() - hP;                found2 = true;                break;            }        }    }    found2 = false;    for (int wP = 0; wP < bmpInt.length && !found2; wP++) {        // looking for Mleft        for (int hP = 0; hP < bmpInt[0].length && !found2; hP++) {            if (bmpInt[wP][hP] != color) {                Log.e("Mleft 2", "Pixel found @" + wP);                Mleft = wP;                found2 = true;                break;            }        }    }    found2 = false;    for (int wP = bmpInt.length - 1; wP >= 0 && !found2; wP--) {        // looking for MRight        for (int hP = 0; hP < bmpInt[0].length && !found2; hP++) {            if (bmpInt[wP][hP] != color) {                Log.e("MRight 2", "Pixel found @" + wP);                MRight = bmp.getWIDth() - wP;                found2 = true;                break;            }        }    }    found2 = false;    int sizeY = bmp.getHeight() - MBot - Mtop, sizeX = bmp.getWIDth()            - MRight - Mleft;    Bitmap bmp2 = Bitmap.createBitmap(bmp, Mleft, Mtop, sizeX, sizeY);    dtMili = (System.currentTimeMillis() - dtMili);    Log.e("margin   2",            "Time needed " + dtMili + "mSec\nh:" + bmp.getWIDth() + "w:"                    + bmp.getHeight() + "\narray x:" + bmpInt.length + "y:"                    + bmpInt[0].length);    return bmp2;}
总结

以上是内存溢出为你收集整理的Android Bitmap删除白边全部内容,希望文章能够帮你解决Android Bitmap删除白边所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1114704.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存