Frage

Ich habe ein paar Bilder mit Safari „Hold + Save Image“ Option meiner Fotobibliothek in Simulator gespeichert. Wenn ich ein Bild aus der Bibliothek holen, habe ich es zu JPEG oder PNG zu konvertieren, damit ich sie auf den Server hochladen. Problem ist, dass die Größe des ursprünglichen Bildes ist etwa 200 KB, aber das Bild nach zu PNG konvertieren etwa 2 MB. Ich verwende UIImagePNGRepresentation UIImage Objekt zu konvertieren zu NSData und dann das Bild zu veröffentlichen.

  1. Was bin ich hier? Warum ist die Größe des Bildes, immer größer ist als die ursprüngliche Größe? Wie kann ich das verhindern?

  2. Was ist der Unterschied zwischen UIImageJPEGRepresentation und UIImagePNGRepresentation? Welche verwendet werden soll (empfohlen)?

  3. Kann ich die Art des Bildes bestimmen, von Foto-Bibliothek geladen?

  4. Was ist der Standardtyp der Bilder von der iPhone-Kamera aufgenommen?

War es hilfreich?

Lösung

Ich vermute, dass das Originalbild als JPEG gespeichert wird.

PNG ist für die Speicherung von Dingen wie Screenshots und Linienzeichnung entworfen. Es ist nicht für Dinge wie Fotos zu speichern.

Es kommt alles auf die Art der Komprimierung verwendet, verwendet PNG verlustfreie Komprimierung, so dass das Bild genau wie das Originalbild das gleiche sein wird. JPEG verwendet verlustbehaftete Kompression, das resultierende Bild ist eine Annäherung an das Original.

Wenn Sie eine verlustbehaftete JPEG nehmen und es dann als PNG speichern, dann wird es in der Größe zu erhöhen, die oft von einer großen Menge, wie Sie gesehen haben.

Die Lösung für Ihr Problem ist nichts, um Ihre Bilder zu tun, bevor Sie sie hochladen. Sie werden bereits PNG, GIF oder JPEG-Bilder sein. Das ist, was Sie sollten hochgeladen werden.

Das Format der Bilder von der iPhone-Kamera gespeichert ist JPEG.

Sound wie Sie brauchen wahrscheinlich auf PNG und JPEG im allgemeinen.

Andere Tipps

In Bezug auf Ihrem dritten Punkt, können Sie den Bildtyp aus der Bibliothek in Ihrer Bild-Picker Delegatmethode geladen bestimmen, wie folgt:

- (void)imagePickerController:(UIImagePickerController *)picker 
didFinishPickingMediaWithInfo:(NSDictionary *)info {

    // Get the image reference URL
    NSURL *referenceURL = [info objectForKey:UIImagePickerControllerReferenceURL];

    // The path extension contains the image type: JPG, PNG, GIF, etc.
    NSString *originalImageType = referenceURL.pathExtension; 

}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top