2015-08-18 4 views
0

Я загружаю растровое изображение. Скопируйте его в изменяемое растровое изображение и замените все пиксели Magenta для прозрачных пикселей. Особенно часть копии кажется пустой тратой ресурсов для меня. Как я могу улучшить это?Могу ли я улучшить обработку растрового изображения?

Bitmap mIcon11 = null; 

    try { 
     InputStream in = new java.net.URL(urldisplay).openStream(); 
     mIcon11 = BitmapFactory.decodeStream(in); 
    } catch (Exception e) { 
     Log.d(TAG, e.getMessage()); 
     e.printStackTrace(); 
    } 


    Bitmap copy = mIcon11.copy(Bitmap.Config.ARGB_8888, true); 
    mIcon11.recycle(); 
    int [] allpixels = new int [ copy.getHeight()*copy.getWidth()]; 
    copy.getPixels(allpixels, 0, copy.getWidth(), 0, 0, copy.getWidth(), copy.getHeight()); 
    for(int i =0; i < copy.getHeight() * copy.getWidth(); i++) 
    { 
     if(allpixels[i] == Color.MAGENTA) 
     { 
      allpixels[i] = Color.TRANSPARENT; 
     } 
    } 
    copy.setPixels(allpixels, 0, copy.getWidth(), 0, 0, copy.getWidth(), copy.getHeight()); 
+0

Из темы, но это удаление красных глаз? – Sheychan

+0

Вы посмотрели на RenderScript? http://developer.android.com/guide/topics/renderscript/index.html –

+0

@Sheychan это не –

ответ

0

Попробуйте что-то вроде:

Bitmap finalBitmap = Bitmap.createBitmap(mIcon11.getWidth(), mIcon11.getHeight, Bitmap.Config.ARGB_8888); 

for(int x = 0; x < mIcon11.getWidth(); x++){ 
    for(int y = 0; y < mIcon11.getHeight(); y++){ 
     if(mIcon11.getPixel(x, y) != Color.MAGENTA){ 
      finalBitmap.setPixel(x, y, mIcon11.getPixel(x, y)); 
     }else{ 
      finalBitmap.setPixel(x, y, Color.TRANSPARENT); 
     } 
    } 
} 

Я просто это от верхней части головы, он должен работать. Если это не работает, попробуйте использовать шестнадцатеричные значения вместо цветов (например: Color.MAGENTA; 0xff00ff), которые могут быть использованы, если ваш пурпурный цвет не такой же, как цвет.MAGENTA, или любой цвет, который вы хотите. Большинство программ редактирования изображений показывают шестнадцатеричное значение вашего цвета.

+0

Зачем это лучше? –

Смежные вопросы