Android: удалить определенный цвет с изображения - PullRequest
0 голосов
/ 19 января 2012

В настоящее время у меня есть некоторый код, который делает снимок экрана и сохраняет его на 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 голосов
/ 22 января 2012

Почему бы вам не проверить значение 'pix1'? Так

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

Кстати, если вы хотите прозрачный цвет, используйте ARGB_8888 вместо RGB_565. Кроме того, взгляните на это: Как изменить цвета Drawable в Android?

...