2013-02-25 29 views
10

Ich habe eine geladene Bitmap, die ich konvertieren möchte, um die Konfiguration auf Bitmap.Config.RGB_565 zu setzen. Gibt es eine einfache Möglichkeit, eine Bitmap in diese Konfiguration zu konvertieren, nachdem die Bitmap bereits in den Speicher geladen wurde? Zum Beispiel, unten habe ich eine Bitmap aus den Anwendungsressourcen entschlüsselt, aber wie würde ich eine bereits geladene Bitmap zu RGB_565 konvertieren? Ich bin mir sicher, dass es etwas Einfaches ist, aber ich bin ziemlich neu in der Arbeit mit Bitmaps und nach ein paar Stunden im Internet, leider konnte ich nicht finden, was ich speziell brauchte.Konvertieren von Bitmap im Speicher in Bitmap mit Bitmap.Config.RGB_565

BitmapFactory.Options options = new BitmapFactory.Options(); 
options.inPreferredConfig=Bitmap.Config.RGB_565 
bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.myphoto ,options); 

Antwort

21

ich nicht getestet haben, aber es sollte funktionieren:

private Bitmap convert(Bitmap bitmap, Bitmap.Config config) { 
    Bitmap convertedBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), config); 
    Canvas canvas = new Canvas(convertedBitmap); 
    Paint paint = new Paint(); 
    paint.setColor(Color.BLACK); 
    canvas.drawBitmap(bitmap, 0, 0, paint); 
    return convertedBitmap; 
} 

Aufruf der Methoden wie folgt aus:

Bitmap convertedBitmap = convert(bitmap, Bitmap.Config.RGB_565); 

Sie können wie Drehen, alle Arten von zusätzlichen Transformationen Stretching usw., wenn Sie verwenden die DrawBitmap mit einer Matrix.

13

Sie können auch versuchen, diese:

Bitmap converted = original.copy(Config.RGB_565, false); 

Vom documentation von Bitmap.copy():

versucht, eine neue Bitmap auf die Dimensionen dieses Bitmap basierend zu machen, um die neue Einstellung Setzen Sie die Bitmap-Konfiguration auf die angegebene Bitmap und kopieren Sie dann die Pixel dieser Bitmap in die neue Bitmap. Wenn die Konvertierung nicht unterstützt wird oder der Zuordner fehlschlägt, wird NULL zurückgegeben.

Wenn Sie durch den nativen Quellcode schauen, sollten Sie alle Werte von Bitmap.Config in Ordnung konvertieren.

Verwandte Themen