Das optimale PixelFormat für Android Apps

Android bietet die Möglichkeit, unterschiedliche Bitmap-Konfigurationen für Bitmaps zu verwenden. Ein Bitmap- Konfiguration beschreibt dabei, wie die Pixel in der Datei gespeichert sind. Dies wirkt sich auf die Qualität (z.B. Farbtiefe) sowie die Möglichkeit, transparente Farben darstellen aus.

Android unterscheidet 4 unterschiedliche Bitmap.Config Typen

 

Bitmap.Config ALPHA_8

Bei der Bitmap.Config ALPHA_8 wird Jeder Pixel als eine einzelne Alpha-Kanal gespeichert. Diese Konfiguration erfordert 1 Byte Speicher für jeden Pixel des Bildes. Dies kann unter Umständen nützlich sein, um Masken effizient zu speichern.

 

Bitmap.Config ARGB_4444

Die Bitmap.Config ARGB_4444 ist seit API-Ebene 13 deprecated. Wegen der schlechten Qualität dieser Konfiguration sollte man auf die Bitmap.Config ARGB_4444 verzichten und stattdessen ARGB_8888 verwenden.

 

Bitmap.Config ARGB_8888

Alle 4 Kanäle im Bild (RGB und Alpha) werden mit einer 8 Bit Genauigkeit gespeichert. Diese Konfiguration ist sehr flexibel und bietet die beste Qualität. Da jeder Pixel in 4 Bytes gespeichert wird, benötigt diese Konfiguration viel Speicher und viel Rechenleistung beim Verarbeiten der Bilddaten. Dahers sollte ARGB_8888 verwendet werden, wenn höchste Qualität und Transparenz benötigt wird.

 

Bitmap.Config RGB_565

Beim RGB_565 PixelFormat wird jeder Pixel in 2 Byte gespeichert und nur die RGB-Kanäle sind vorhanden. RGB_565 Bitmaps enthallten keine Transparenz.

  • Rot wird mit 5 Bit Genauigkeit (32 mögliche Werte ) gespeichert
  • Grün wird mit 6 Bit Genauigkeit (64 mögliche Werte ) gespeichert
  • Blau wird mit 5 Bit Genauigkeit (32 mögliche Werte ) gespeichert

RGB_565 kann nützlich sein bei der Verwendung von Bitmaps die auf Transparenz verzichten und keine hohe Farbtiefe benötigen. Der Vorteil von RGB_565 ist, dass diese Bitmaps schneller gezeichnet werden können und wesentlich weniger Speicher benötigen.
Bei meinen Experimenten habe ich eine ca. 15% bessere Performance beobachten können.

 

RGB_565 Datei mit Gimp erstellen

Das erstellen von RGB_565 JPGs ist nicht ganz einfach. Für Photoshop gibt es z.B. ein extra Plugin für diese Aufgabe. Da ich aber ein Gimp Nutzer bin, hilft mir das nicht viel.
Allerdings gibt es auch eine Möglichkeit, in Gimp ein Bild zu erstellen, dass als RGB_565 gespeichert wird. Dafür muss in Gimp das dither16bit.scm script und die folgenen 4 Palletten installiert werden.

  • 1BitGrayscale.gpl
  • 4BitGrayscale.gpl
  • 5BitGrayscale.gpl
  • 6BitGrayscale.gpl

Download der Paletten:
Grayscales.zip

Die 4 Paletten müssen in den Ordner %GIMP_HOME%/share/gimp/2.0/palettes/ kopiert werden. Wenn die Paletten verfügbar sind, kann man im Dialog “Palletten” folgende 4 neue Palletten sehen.

gimp-palettes

Nun muss noch das dither16bit.scm script in den Ordner %GIMP_HOME/share/gimp/2.0/scripts kopiert werden. Leider gibt es hier keinen Refresh Button und Gimp muss einmal neu gestartet werden, bevor das Plugin verwendet werden kann. Danach findet man im Menü folgende Menüpunkte mit denen man sein Bild in ein RGB_565 Bitmap umwandeln kann.

gimp-rgb565-for-mobile

 

Fazit

Welches PixelFormat den eigenen Anforderungen am Besten entspricht, muss jeder für sich entscheiden. Ich werde in Zukunft jedenfalls häufiger mal das Format verwenden. In den meisten Fällen reichen mir 65536 unterschiedliche Farben wenn ich z.B. ein drawable für einen Button oder eine andere Komponente benötige.

Meine Apps im Google Play-Strore Jetzt bei Google Play