2017-10-13 2 views
2

Wenn ich in Python mache, dreht es manchmal die Breite und Höhe des Bildes. Nach einigen Nachforschungen (siehe diese post Erklärung), scheint es, dass, wenn das Bild Exif Orientation metadata zugeordnet ist, dann wird dies dazu führen, dass Anwendungen, die diese Eigenschaft zu respektieren, um es zu drehen.Manuelles Festlegen der Exif-Eigenschaft und Beibehalten der ursprünglichen Breite und Höhe des Bildes in Python

Also zuerst mein Bild der Exif-Eigenschaft Ich teste von

identify -verbose image.JPG | grep Orientation 

tun Es gibt , was bedeutet, dass das Bild die Eigenschaft hat, und wird daher leicht geschlagen werden. Wenn die Antwort ist, dann hat das Bild nicht Exif Orientation metadata und ist daher nicht umgedreht. Da ich das Bild nicht spiegeln möchte, habe ich versucht, die Exif property manuell einzustellen, indem ich einen Vorschlag von diesem post nehme.

Also habe ich versucht, orientation.exif.primary.Orientation[0] = 1 manuell in meinem Code. Wie folgt aus:

from PIL import Image 
import pexif 


orientation = pexif.JpegFile.fromFile('image.JPG') 

print("BEFORE:") 
print(orientation.exif.primary.Orientation[0]) 

orientation.exif.primary.Orientation[0] = 1 

print("AFTER:") 
print(orientation.exif.primary.Orientation[0]) 


img = Image.open('image.JPG') 
print(img.size) 

Dies korrigiert druckt nach NACH jedoch ist es nicht eigentlich auf 1 im wirklichen Leben gesetzt, denn wenn ich identify -verbose image.JPG | grep Orientation wieder laufen, ist es immer noch zeigt. Wie komme ich eigentlich um dieses Problem herum und habe nicht die Breite und Höhe des Bildes umgedreht?

Antwort

0

Ich nehme das nicht zur Kenntnis. Dieser post von Superuser hat mein Problem gelöst.

Fix:

import os 
os.system("exiftool -Orientation=1 -n image.JPG") 

Dadurch wird die Ausrichtung des aktuellen Bildes setzt auf 1. Der Code, den ich in der ursprünglichen Frage hatte ändert die Ausrichtung des Bildobjekts I erstellt, nicht das eigentliche Bild selbst.

Verwandte Themen