Hier ist ein Beispiel, das über jedes Pixel iteriert.
/**
* @param bitmap a mutable bitmap instance.
*/
private void darkenBitmap(Bitmap bitmap) {
int height = bitmap.getHeight();
int width = bitmap.getWidth();
int pixel;
// Iterate over each row (y-axis)
for (int y = 0; y < height; y++) {
// and each column (x-axis) on that row
for (int x = 0; x < width; x++) {
pixel = bitmap.getPixel(x, y);
// TODO: Modify your pixel here. For samples, http://stackoverflow.com/questions/4928772/android-color-darker
bitmap.setPixel(x, y, pixel);
}
}
}
Das Verfahren erfordert wandelbar Bitmap, deshalb brauchen Sie wahrscheinlich Ihre Bitmap mit BitmapFactory Optionen zu laden. z.B.
BitmapFactory.Options options = new BitmapFactory.Options();
options.inMutable = true;
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.somebitmap, options);
Genauso gut könnte man einen neuen wandelbaren Bitmap innerhalb dieser Methode erstellen, rufen setPixel (...) auf dem und es zurück. Aber ich werde dringend empfehlen, diese Art von Speicherzuweisung zu vermeiden, wenn dies möglich ist.
Sie können einen Filter verwenden möchten, wenn Sie nicht wollen, es dauerhaft verdunkeln und auf der Festplatte, zu teilen usw. speichern ... Hier sind einige Referenzen, http://gamedev.stackexchange.com/a/5394 http://stackoverflow.com/a/3499103/892500 –