Android:从图像中删除某些颜色

时间:2012-01-19 11:47:53

标签: java android opengl-es screenshot

我目前有一些代码需要截图并将其保存到SD卡(如果存在)。我现在需要做的是从该截图中删除背景颜色,使其变得透明但是我无法弄清楚它是如何工作的

以下是我用来截取屏幕截图的代码

         int b[]=new int[w*h];
         int bt[]=new int[w*h];
         IntBuffer ib=IntBuffer.wrap(b);
         ib.position(0);
         gl.glReadPixels(x, y, w, h, GL10.GL_RGBA, GL10.GL_UNSIGNED_BYTE, ib);
         for(int i=0; i<h; i++)
         {//remember, that OpenGL bitmap is incompatible with Android bitmap
          //and so, some correction need.        
              for(int j=0; j<w; j++)
              {
                   int pix=b[i*w+j];
                   int pb=(pix>>16)&0xff;
                   int pr=(pix<<16)&0x00ff0000;
                   int pix1=(pix&0xff00ff00) | pr | pb;
                   bt[(h-i-1)*w+j]=pix1;
              }
         }                  
         Bitmap sb=Bitmap.createBitmap(bt, w, h, Bitmap.Config.RGB_565);
         return sb;

如何从该图像中删除某种颜色或用透明背景保存?

1 个答案:

答案 0 :(得分:0)

为什么不检查'pix1'的值?所以

if(pix1 == replaceFrom)
    pix1 = replaceTo
bt[(h-i-1)*w+j]=pix1;

顺便说一句,如果你想要透明色,请使用ARGB_8888而不是RGB_565。 此外,请看一下:How to change colors of a Drawable in Android?