Apps für Android programmieren leicht gemacht!

Bilder für Android Apps komprimieren

Bereits vor einigen Tagen haben wir angesprochen, dass Google mittels neuer Kompressionsmethode die Dateigröße von Updates aus dem PlayStore verkleinern konnte.
Heute würde ich dieses Thema gerne aufgreifen und erklären, wie ihr schon alleine die Grunddateigröße eurer Android App mittels dem Komprimieren von Bildern schrumpfen könnt.

Apps verbrauchen sowohl viel Datenvolumen, als auch Speicherplatz auf dem Gerät selber.
Hier greift zumindest in einem Teil der beiden Fälle der neue Mechanismus von Google, in dem er zumindest die Updates verkleinert. Das Problem mit der Neuinstallation bleibt jedoch weiter bestehen und im installierten Zustand ist unsere App trotz des neuen Kompressionsverfahrens weiterhin unverändert groß.

Woran liegt das?
Naja, als erstes komprimiert Google die Updates, welche heruntergeladen werden müssen.
Wird die App installiert, so wird auch die ursprüngliche Datei und damit die ursprüngliche Größe der App wiederhergestellt. Damit ist zumindest bei installierten Updates keine Speicherveränderung zu erreichen. Weiterhin wird zwar aus einer Vielzahl von Dateien und Programmcode eine „komprimierte“ .apk Datei erstellt, doch diese dient in erster Linie als Container. Einem Container, der alle Dateien in einer vereint und so nicht unbedingt die Dateigröße, sondern die herunterzuladene Dateianzahl verringert. Natürlich wird auch komprimiert, doch dieser Effekt fällt im installierten Zustand gering aus. Zumal eine kleine Datei komprimiert -nicht immer zwangsläufig, aber mit hoher Wahrscheinlichkeit- auch kleiner ausfällt, als eine große Grunddatei.

Nun denn, bei einer App mit einigermaßen vielen Bildern oder Musik/Tönen/Videos fällt der Großteil der .apk-Dateigröße auf diese Dateien zurück.
Hier haben wir nun die Möglichkeit zumindest die Bilder auf einfachste Weise zu komprimieren. Dies kommt den Nutzern im Sinne von gespartem Datenvolumen und Speicherplatz auf dem Handy zu Gute.

Wir werden uns hier auf die verlustfreie Komprimierung beschränken, also eine Einsparung an Dateigröße, bei selber Bildqualität.
Dies bedeutet, wir sparen Dateigröße ein, indem wir die Berechnungen für die Pixel eines Bildes besser setzen und Meta-Informationen, wie Erstelldatum, Aufnahmeort, etc. entfernen.
Es gibt selbstverständlich verschiedenste Tools (Online, sowie Offline).

Windows
Für die verlustlose Komprimierung von JPG-Bildern und PNG-Bildern unter Windows empfehle ich FileOptimizer.
Dieses Programm ist kostenlos erhältlich und Open Source.

Mac
Für Nutzer eines Mac mit MacOS würde ich zumindest für PNG-Bilder die App OptImage empfehlen. Diese ist im Apple App Store verfügbar und kostenlos.
Eine Komprimierung von JPG-Dateien ist hier jedoch nicht verlustlos möglich.

Alternativ gäbe es noch ImageOptim zu empfehlen.
Dieses Programm ist zwar kostenlos und kann sowohl JPG-Dateien, als auch PNG-Bilder verlustlos Komprimieren, ist dafür aber nicht im App Store vertreten.
Wen das nicht stört, der sollte beherzt zugreifen.

Linux
Für die Linux Vertreter unter euch würde ich OptiPng und jpegoptim empfehlen.
Beide Programme sind auf der Konsole angesiedelt und verrichten (auch für mich) perfekt ihre Arbeit.

Die Installation ist über die Konsole mittels dieser zwei Befehle zu erreichen:

sudo apt-get install optipng
sudo apt-get install jpegoptim

 

Die Konsolenbefehle zur Kompression mit dem höchsten verlustfreien Kompressionsgrad lauten:

jpegoptim -o --strip-all *.jpg //Komprimiert alle jpg Bilder im momentanen Ordner
jpegoptim -o --strip-all *.jpeg //Komprimiert alle jpeg Bilder im momentanen Ordner

optipng -o7 -preserve *.png //Komprimiert alle png Bilder im momentanen Ordner

Ich bin mit diesen beiden Programmen sehr zufrieden und nutze sie selber, über ein kleines selbstgeschriebenes Java Programm.
Auf einem Raspberry Pi per Crontab komprimieren sie fleißig eigenständig alle Bilder von Droid-Lernen.de.

Online
Für die Onlinekompression von Bildern gibt es diverse und vor allem ziemlich viele Anbieter.
Da ich hier nicht alle Anbieter aufzeigen kann, werde ich meinen persönlichen Favoriten angeben.

Mit Compressor.io ist es uns möglich sowohl Jpeg, Gif, Png, als auch SVG Grafiken in der Dateigröße zu verkleinern.
Es gibt zusätzlich noch die Möglichkeit zwischen verlustloser und verlustbehafteter Kompression zu wählen und so möglicherweise noch weitere Bytes zu sparen.

 

Genug der Theorie.
Ich habe mal unsere Kaffee-Clicker App genommen und die dort verwendeten Bilder mittels der Kompression unter Mac (ImageOptim) komprimiert.
Ich konnte über die Kompression der vier Bilder 21 KB einsparen.
Das klingt jetzt nach nicht viel, doch handelt es sich lediglich um vier Bilder.
Bei mehr und vor allem größeren Bildern kann noch deutlich mehr einspart werden.

Wenn wir uns nun die kompilierte App einmal ohne und einmal mit Komprimierung anschauen, dann werden wir feststellen, dass wir sogar noch mehr KB einsparen konnten. Um genau zu sein sogar 22,6 KB.
Wer nun mehr, als nur vier Bilder in seiner App eingebaut hat, der kann den Speicherbedarf gewiss noch weiter drücken.
Eine kleine Anmerkung zum Schluss: Nachdem ihr eure Bilder komprimiert habt, müsst ihr vor dem Kompilieren noch einmal „Clean Project“ im unter dem Menüpunkt „Build“ ausführen, sonst hat die Kompression keine Auswirkungen.

Marvin

Ich bin 23 Jahre jung und studiere zurzeit Wirtschaftsinformatik an der Georg-August-Universität in Göttingen. Ich bin ein Mensch, der sich neben der Programmierung noch für tausend andere Dinge interessiert, die mal mehr und mal weniger verrückt sind. Vor allem aber bin ich Feuer und Flamme mit der Programmierung von eigenen kleinen Apps und Programmen, die mein Leben bereichern.

Kommentar hinzufügen

*Pflichtfeld