Ich verwende UIImagePickerController, um ein Foto im Hochformat auf dem iPhone aufzunehmen und im Internet zu speichern. Das Foto erscheint im Hochformat auf dem Telefon, dreht sich jedoch um 90 Grad im Web.
Wenn ich das Foto herunterlade und es in Vorschau (Mac) oder Photoshop (Mac oder PC) anschaue, ist es wieder im Hochformat. Im Windows Picture Viewer (PC) wird es in Querformat gedreht.
Muss ich vor dem Hochladen eine Rotationstransformation auf die Bilddaten anwenden? Muss ich dann auch die Metadaten entfernen, die es in Photoshop und in der Vorschau drehen?
Das Problem bestand darin, dass die Bilddrehung dem Foto als EXIF-Daten hinzugefügt wurde, die von den meisten Browsern nicht verwendet wurden. Es gibt zwei Lösungen:
Wenden Sie die Drehung auf der Serverseite an. Ich benutzte das Ruby-Plugin Paperclip (von Thoughtbot) und musste einfach die Option "Automatisch ausrichten" in den Befehl "has_attached_file" im Modell einfügen:
has_attached_file: Foto,: convert_options = & gt; {: alle = & gt; '-auto-orient'}
Drehen Sie das Foto in der iPhone App. Dies wurde in einer weiteren Stackoverflow-Frage gelöst; Durch Aufruf der scaleAndRotate-Methode werden die Rotations-Metadaten durch ein Bildtransformation, dank @Squeegy.
Sobald Sie das Foto aufgenommen haben, bevor Sie das Bild auf den Server hochgeladen haben, übergeben Sie das aufgenommene Bild einfach an eine Methode, die sicherlich für Sie funktioniert.
%Vor%Hier ist eine einfache Möglichkeit, die EXIF-Rotations-Metadaten manuell zu überschreiben, wenn das Bild in der richtigen Ausrichtung in MS Windows gespeichert wird. Klicken Sie im Windows Explorer mit der rechten Maustaste auf die Bilddatei und wählen Sie "Im Uhrzeigersinn drehen". Führen Sie dies viermal durch, um das Bild vollständig zu drehen, und dann wird das Bild für alle Systeme korrekt ausgerichtet. Dann können Sie das Bild auf Ihren Webserver hochladen.
Tags und Links iphone uiimagepickercontroller image-uploading