当我在python中执行Image.open
时,它有时会翻转图像的宽度和高度。经过一些研究(参见post的解释),似乎如果图像与Exif Orientation metadata
相关联,那么这将导致尊重该属性的应用程序旋转它。
首先,我通过
测试我的图像的Exif属性identify -verbose image.JPG | grep Orientation
它返回 6 ,这意味着图像具有属性,因此将被翻转。如果响应 1 ,则图片没有Exif Orientation metadata
,因此不会翻转。由于我不想翻转图片,因此我尝试通过此post的建议手动设置Exif property
。
所以我尝试在我的代码中手动设置orientation.exif.primary.Orientation[0] = 1
。像这样:
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)
这可以在 AFTER 之后修正 1 然而,它实际上并没有在现实生活中将其设置为1,因为当我再次运行identify -verbose image.JPG | grep Orientation
时,它仍然是显示 6 。那么我该如何解决这个问题并且没有翻转图像的宽度和高度呢?
答案 0 :(得分:0)
我不赞成这一点。超级用户的post解决了我的问题。
修复:
import os
os.system("exiftool -Orientation=1 -n image.JPG")
这会将实际图像的方向设置为1.原始问题中的代码会更改我创建的图像对象的方向,而不是实际图像本身。