2014-10-12 7 views
17

Ich möchte einen Filter auf ein Foto aus der Bibliothek des Benutzers anwenden und dann auf die Festplatte schreiben. Ich benutze UIImageJPEGRepresentation. Diese Funktion benötigt einen UIImage und einen compressionQuality Wert zwischen 0,0 und 1,0. Da ich die ursprüngliche Qualität beibehalten möchte, setze ich sie auf 1.0. Aber ich fand, dass dies tatsächlich eine Bilddatei erzeugt, deren Dateigröße größer ist als die des Originals, sogar etwas größer. Ich habe festgestellt, dass die App in der App "Sample Photo Editing Extension" die Qualität immer auf 0,9 setzt. Ich habe das ausprobiert und es gibt eine Dateigröße aus, die der Größe der ursprünglichen Fotodatei sehr nahe kommt. Das ergibt für mich keinen Sinn. Kann jemand das erklären? Ist es angemessen, immer 0,9 zu verwenden? Komprimiert die iOS-Kamera diesen Wert und somit ist 0,9 die Originalqualität? Oder warum ist 0,9 eigentlich nicht 1.0, wenn es nichts Besseres gibt?Was sollte compressionQuality sein, wenn UIImageJPEGRepresentation verwendet wird?

NSData *renderedJPEGData = UIImageJPEGRepresentation(image, 0.9f); 
+1

0,9 führt zu Qualitätsverlust im Bild - es wird ein gewisses Maß an Komprimierung angewendet, so dass Sie Daten verlieren werden. Wenn Sie die ursprüngliche Qualität beibehalten möchten, verwenden Sie UIImagePNGRepresentation. JPG ist ein verlustbehaftetes Format. Die Verwendung von PNG führt zu einer größeren Dateigröße, aber die gespeicherten Ergebnisse haben die gleiche Qualität wie das Eingabebild. – rickerbh

+0

@rickerbh Aber Fotos mit der iPhone-Kamera aufgenommen werden als JPEG nicht PNG – Joey

+1

Sure. Wenn Sie jedoch dieselbe Qualität beibehalten möchten, sollten Sie das Bild nicht mit einem verlustbehafteten Format neu codieren. Wenn Sie mit einem Qualitätsverlust zufrieden sind (der normalerweise von Nutzern, die das Bild anzeigen, nicht bemerkt wird), verwenden Sie JPG. Normalerweise verwende ich einen Wert wie 0.7, denn ich finde, dass es normalerweise zu einem Bild führt, das nicht schrecklich ist, aber normalerweise eine gute Dateigröße spart. Wenn Sie mehr über die Rekomprimierung erfahren möchten, schauen Sie im Abschnitt "Rekompression" unter http://www.ampsoft.net/webdesign-l/jpeg-compression.html nach. – rickerbh

Antwort

0

Sie können Bild in PNG-Darstellung für die ursprüngliche Bildqualität konvertieren.

+1

Ich möchte nicht verwenden UIImagePNGRepresentation und ich möchte auf UIImageJPEGRepresentation verwenden :) –

Verwandte Themen