Ich habe eine App, die eine Reihe von Bildern in einer Diashow anzeigt. Diese Bilder werden Teil des Bundles sein und somit mit der App verteilt.
Alle Bilder sind Fotos oder Fotos usw.
Ich habe gelesen, dass es bevorzugt wird, PNG als Bildformat zu verwenden, aber da die JPG-Version viel kleiner sein wird, würde ich das lieber verwenden.
Gibt es Richtlinien, welches Format in welchem Fall verwendet werden soll?
Antworten:
PNGs sind pixelgenau (verlustfrei) und erfordern nur sehr wenig zusätzliche CPU-Energie für die Anzeige. Das Lesen großer PNGs aus dem Speicher kann jedoch länger dauern als das Komprimieren von Bildformaten und daher langsamer angezeigt werden.
JPGs sind kleiner zu speichern, aber verlustbehaftet (die Menge hängt von der Komprimierungsstufe ab). Um sie anzuzeigen, ist ein viel komplizierterer Decodierungsalgorithmus erforderlich. Die typische Komprimierung und Bildqualität ist jedoch für Fotos normalerweise völlig ausreichend.
Verwenden Sie JPGs für Fotos und für alles, was groß ist, und PNGs für alles, was klein und / oder "pixelgenau" (z. B. kleine Symbole) oder als Teil einer zusammengesetzten transparenten Überlagerung usw. angezeigt werden soll.
quelle
Apple optimiert PNG-Bilder, die in Ihrem iPhone-App-Bundle enthalten sind. Tatsächlich verwendet das iPhone eine spezielle Codierung, bei der die Farbbytes für die Hardware optimiert sind. XCode übernimmt diese spezielle Codierung für Sie, wenn Sie Ihr Projekt erstellen. Sie sehen also zusätzliche Vorteile bei der Verwendung von PNGs auf einem iPhone, die nicht die Größe berücksichtigen. Aus diesem Grund wird definitiv empfohlen, PNGs für alle Bilder zu verwenden, die als Teil der Benutzeroberfläche angezeigt werden (in einer Tabellenansicht, Beschriftungen usw.).
Bei der Anzeige eines Vollbilds wie eines Fotos können Sie dennoch Vorteile mit PNGs erzielen, da diese verlustfrei sind und die visuelle Qualität besser sein sollte als bei JPGs, ganz zu schweigen von der Ressourcennutzung beim Dekodieren des Bildes. Möglicherweise müssen Sie die Qualität Ihrer JPGs verringern, um einen echten Vorteil bei der Dateigröße zu erzielen. Anschließend werden jedoch nicht optimale Bilder angezeigt.
Die Dateigröße ist sicherlich ein Faktor, aber bei der Auswahl eines Bildformats spielen auch andere Überlegungen eine Rolle.
quelle
Bei PNGs ist eine wichtige Sache zu beachten. Wenn ein PNG in Ihrem Xcode-Build enthalten ist, wird es für iOS optimiert. Dies wird als PNG-Crush bezeichnet. Wenn Ihr PNG zur Laufzeit heruntergeladen wird, wird es nicht zerstört. Crushed PNGs laufen ungefähr genauso wie 100% JPGs. JPGs mit geringerer Qualität laufen besser als JPGs mit höherer Qualität. Vom Standpunkt der Leistung vom schnellsten zum langsamsten würde es also JPG von geringer Qualität, JPG von hoher Qualität, Crushed von PNG und PNG geben.
Wenn Sie PNGs herunterladen müssen, sollten Sie in Betracht ziehen, die PNGs vor dem Download auf dem Server zu zerstören.
http://www.cocoanetics.com/2011/10/avoiding-image-decompression-sickness/
quelle
Der Cocoanetics-Blog veröffentlichte einen schönen iOS-Leistungsbenchmark für JPGs mit verschiedenen Qualitätsstufen und PNGs mit und ohne Crushing.
Aus seiner Schlussfolgerung:
quelle
Ich dachte nur, ich würde ein paar Daten zur Dekomprimierungsleistung teilen ...
Ich mache ein Prototyping eines 360-Grad-Betrachters - eines Karussells, in dem der Benutzer eine Reihe von Fotos aus verschiedenen Winkeln durchdrehen kann, um den Eindruck zu erwecken, ein Objekt reibungslos drehen zu können.
Ich habe die Bilddaten in ein Array von NSData geladen, um Datei-E / A aus der Gleichung zu entfernen, aber NSImage's im laufenden Betrieb erstellt. Testen mit nahezu maximaler Bildrate (~ 25 fps) und Ansehen in Instrumenten Ich sehe, dass die App eindeutig an die CPU gebunden ist und die CPU-Auslastung um ca. 10% zunimmt, was ~ 275 kb PNGs gegenüber ~ 75 kb JPGs anzeigt.
Ich kann nicht sicher sagen, aber ich vermute, dass das CPU-Limit nur von der allgemeinen Programmausführung und dem Verschieben aller Daten im Speicher herrührt, aber diese Bilddekomprimierung erfolgt auf der GPU. In beiden Fällen scheint das Leistungsargument JPG vs. PNG JPG zu bevorzugen, insbesondere wenn die kleineren Dateigrößen (und daher zumindest in einigen Teilen der Kette kleinere Objekte im Speicher) berücksichtigt werden.
Natürlich ist jede Situation anders, es gibt keinen Ersatz für Tests ...
quelle
Ich habe massive Unterschiede in der Animationsleistung bei der Verwendung von JPEGs und PNG festgestellt. Wenn Sie beispielsweise drei JPEGs in Bildschirmgröße nebeneinander in einer UIScrollView platzieren und auf einem iPhone4 horizontal scrollen, führt dies zu Verzögerungen und einer durch und durch unangenehmen ruckartigen Animation. Bei nicht transparenten PNGs mit den gleichen Abmessungen ist das Scrollen reibungslos. Ich benutze niemals JPEGs, auch wenn das Bild groß ist.
quelle
Ich denke, wenn Sie transparent verwenden möchten, haben Sie keine andere Wahl als PNG. Wenn Ihr Hintergrund jedoch bereits undurchsichtig ist, können Sie JPG verwenden. Das ist der einzige Unterschied, den ich sehen kann
quelle
'Verwenden Sie JPEG für Fotos', wie in den Richtlinien für Benutzeroberflächen im Abschnitt Erstellen von Grafiken im entsprechenden Format erwähnt.
quelle