2015-02-24 2 views
0

Итак, я пытаюсь сделать это, если я нажму кнопку, это будет оттенять изображение, которое находится на одном экране с оранжевым цветом (70%).Android bitmap tint, getPixel error

Button OrangeButton= (Button) findViewById(R.id.OButton); 
    OrangeButton.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      imageCapture = (ImageView) findViewById(R.id.imageCapture); 
      BitmapDrawable drawable = (BitmapDrawable) imageCapture 
        .getDrawable(); 
      final Bitmap imgbitmap = drawable.getBitmap(); 
      // convert bitmap to hokie tint 
      Bitmap imgnew; 
      imgnew = toOrange(imgbitmap); 

      // convert bitmap to imageview 
      imageCapture.setImageBitmap(imgnew); 
     } 
    }); 

} 

Вот мой оранжевый метод.

public Bitmap toOrange(Bitmap bmpOriginal) { 
    int width, height; 
    height = bmpOriginal.getHeight(); 
    width = bmpOriginal.getWidth(); 
    int orangeFilter = new Color().rgb(255, 165, 0); 
    int maroonFilter = new Color().rgb(115, 24, 44); 
    for (int j = 0; j < height - 1; j++) { 
     for (int i = 0; i < width - 1; i++) { 

Я уверен, что у меня есть проблема, здесь.

 int newColor = (int) (bmpOriginal.getPixel(i, j) * 0.7 + orangeFilter 
       * 0.3); 
     bmpOriginal.setPixel(i, j, newColor); 
      } 

    } 
    return bmpOriginal; 
} 

Я попытался bmpOriginal.setPixel (5, 5, Color.Red) за пределами этого loob, и он сделал ошибку тоже. Поэтому я знаю, что setPixel не работает. Как я могу исправить эту проблему?

ответ

0

Поскольку вы не отправляете сообщение о том, что именно происходит, я предполагаю, что битмап неизменен, а это значит, что вы не можете его изменить. Вы можете попробовать сделать изменяемую копию см http://developer.android.com/reference/android/graphics/Bitmap.html

более простой способ может быть, чтобы применить цвет фильтра в ImageView так:

imageCapture.setColorFilter(Color.rgb(255, 165, 0));