Was verbraucht mehr Speicher "Schwarz" oder "Weiß"?
Ich habe ein Experiment gewagt um herauszufinden welcher dieser Dateiformate mehr Speicherplatz verbraucht:
Bilder die komplett weiß sind und Bilder die komplett schwarz sind.
Zu meinem Erstaunen habe ich herausgestellt das es vom Bildformat abhängt, mal ist es im PNG Format die schwarze Farbe die weniger Speicher verbraucht mal ist es die weiße Farbe auf JPEG.
Meine konkrete Frage lautet: Ist das wirklich so? Liegt das am Dateiformat ob mal die schwarze oder weiße Farbe mehr oder weniger Speicherplatz beansprucht?
Gibt es da eine "Regel" welcher von den beiden prinzipiell mehr Speicher beansprucht? Wie schaut es vom Grundsatz mit hellen und dunklen Farbtönen? Macht das ein Unterschied?
5 Stimmen
4 Antworten
Liegt das am Dateiformat ob mal die schwarze oder weiße Farbe mehr oder weniger Speicherplatz beansprucht?
Ja. Und nicht nur daran. Sondern auch an den Einstellungen mit denen gespeichert wird (z.B. Kompressionsrate oder Farbraum) und sogar was im Bild zu sehen ist.
BMP ist unkomprimiert und speichert Pixel für Pixel ab. Speicherst du als 24Bit-BMP belegt jedes Pixel 3 Byte (je 1 für rot, grün und blau). Die Dateigröße hängt hier also direkt von der Bildauflösung ab. Was drin zu sehen ist oder welche Farben benutzt werden spielt keine Rolle für die Dateigröße.
GIF nutzt eine Farbtabelle und speichert die Positionen wo diese Farben benutzt werden. Welche Farben benutzt werden spielt keine Rolle, sondern dessen Anzahl. Ein komplett weißes und ein schwarzes GIF-Bild sollte sich daher in der Dateigröße nicht unterscheiden.
JPEG teilt das Bild in kleine Blöcke auf und rechnet die Pixel mithilfe der Diskreten Kosinustransformation in den Frequenzraum um und werden dann quantisiert, umsortiert und mithilfe einer Entropiekodierung komprimiert. Vereinfacht gesagt wird pro Block eine Grundfarbe bestimmt und die Abweichungen zu dieser Grundfarbe, gerundet und in eine andere Reihenfolge gebracht sodass ähnliche Farben ganz hinten stehen, damit die Entropiekodierung leichtes Spiel hat sie zusammenzufassen. Das bedeutet JPEG funktioniert gut wenn die verwendeten Farben gleich oder sehr ähnlich sind, aber nur schlecht wenn es viele verschiedene Farben auf kleinstem Raum gibt (z.B. jedes Pixel eine andere Hauptfarbe). Deswegen zermatschen JPEGs auch an harten Farbübergängen. Für sowas ist das Format überhaupt nicht geeignet, sondern für Fotos wo es zwar viele Details gibt, die aber eher weich ineinander übergehen (ähnliche Farben). Ein völlig schwarzes / weißes JPEG sollte also auch identische Größen haben (bei gleichen Einstellungen).
PNG verwendet eine Delta-Kodierung bei der benachbarte Pixel zusammengefasst werden (aber umkehrbar) und verschiedene Verarbeitungsschritte zur Komprimierung herangezogen werden. Diese Schritte werden je nach Bildinhalt heuristisch ausgewählt. Daher kann man nicht so genau vorhersagen welche Farben wann weniger Speicher brauchen
Das ganze Thema ist ungeheuer komplex. Es gibt so viele Variablen die die resultierende Dateigröße bestimmen, dass man nur bei sehr einfachen Formaten wie BMP relativ sicher bestimmen kann wie viel Speicherplatz das Bild genau belegt. Der bedeutenste Faktor (bei den gängigen Formaten für Rastergrafiken) ist aber die Anzahl der Pixel, welche oft durch eine X*Y-Auflösung angegeben wird.
PS: könnte sein dass einige Details die ich bzgl. der Formate genannt habe nicht 100%ig stimmen. Ist jetzt schon 2, 3 Jahre her als ich mich das letzte Mal intensiv mit Grafikformaten beschäftigt habe
Es gibt verschiedene Bildformate. Solche, die nur schwarz und weiß unterscheiden, solche, die nur 16 Farben berücksichtigen und solche, die mit ca. 2 Milliarden Farben arbeiten (JPG, PNG). Diese Formate mischen alle Farben aus rot, grün und blau, jede einzelne Farbe wird mit einer Zahl zwischen 0 und 255 (8 Bit) ausgedrückt. Für jeden einzelnen Bildpunkt braucht man also genau drei Bytes Speicherplatz, ganz egal, in welcher Farbe. Ein Bild mit 1024 x 780 Pixel braucht also unkomprimiert genau 1024*780*3 = 2.396.160 Byte, also rund 2 MB. Um Speicherplatz zu sparen, werden diese 2 MB stark komprimiert und verbrauchen dann als JPG-Datei nur noch wenige Kilobytes.
Fazit: Welche Farbe du wählst (schwarz, weiß) ist völlig egal, eine Bild, das ausschließlich identische Bit-Folgen enthält (schwarz = 000000, weiß = FFFFFF) ergibt die gleiche Dateigröße, auch nach der Komprimierung. Erst durch die Mischung der Farben ergeben sich größere Dateien, da weniger stark komprimiert werden kann.
Interessante frage eigentlich, darüber habe ich noch nie wirklich nach gedacht.
Was mir dazu allerdings einfällt...
Folgendes wurde uns mal von einem unserer dozenten gesagt. Getestet habe ich es noch nicht:
Wenn man wert auf geringen energieverbrauch legt, sollte man sein hintergrundbild auf einfarbig rot, grün oder blau einstellen. Das sind die nativen farben eines LCD-displays. Alle anderen farben werden daraus gemischt. Wählt man eine dieser farben, verbraucht jedes pixel nur etwa 1/3 des stroms im vergleich zu mischfarben, wo jedes pixel 3 farben gleichzeitig mit strom versorgen muss... ich hoffe das war halbwegs 'laien-verständlich' formuliert.
Das hängt in erster Linie vom Bildformat ab, wieviel Speicher benötigt wird. Einige Bildformate kennen Lauflängenkodierungen, bei denen nur einmal die Farbe abgelegt wird und dann die Anzahl. Bei denen wäre es kein Unterschied ob das komplett weiß, schwarz oder rot wäre.