根据 EXIF 信息旋转原生 iPhone 图像?
Rotate native iPhone images based on EXIF info?
正在开发一个用户可以上传照片的网站。
正如你们许多人所知,未经编辑的 iPhone 照片使用“方向”EXIF 标签来确定方向。在我的 PC 上,我无法上传 .HEIC 文件,而且由于 SSL 原因,如果我执行 manage.py runserver localhostIP:8000 也无法上传文件,因此很难调试。查看 iPhone 照片上的 EXIF 数据,这似乎应该正确旋转 iPhone 图像,但它们仍然以错误的方向上传,我无法真正查看什么 EXIF 标签 iPhone 图片正在后台返回。
im = Image.open(self.content_media)
img_exif = im.getexif()
for key, val in img_exif.items():
print(val)
if "rotate 90 cw" in str(val).lower():
im.rotate(90)
if "rotate 180 cw" in str(val).lower():
im.rotate(180)
if "rotate 270 cw" in str(val).lower():
im.rotate(270)
这是我的一个具有媒体的模型的保存方法。
from PIL import Image, ImageOps
image = Image.open(foo)
im = ImageOps.exif_transpose(image)
然后您可以做任何事情 compression/resizing/renaming 或任何您使用 PIL 的目的,但原生 iPhone 和三星照片将应用适当的旋转。
正在开发一个用户可以上传照片的网站。 正如你们许多人所知,未经编辑的 iPhone 照片使用“方向”EXIF 标签来确定方向。在我的 PC 上,我无法上传 .HEIC 文件,而且由于 SSL 原因,如果我执行 manage.py runserver localhostIP:8000 也无法上传文件,因此很难调试。查看 iPhone 照片上的 EXIF 数据,这似乎应该正确旋转 iPhone 图像,但它们仍然以错误的方向上传,我无法真正查看什么 EXIF 标签 iPhone 图片正在后台返回。
im = Image.open(self.content_media)
img_exif = im.getexif()
for key, val in img_exif.items():
print(val)
if "rotate 90 cw" in str(val).lower():
im.rotate(90)
if "rotate 180 cw" in str(val).lower():
im.rotate(180)
if "rotate 270 cw" in str(val).lower():
im.rotate(270)
这是我的一个具有媒体的模型的保存方法。
from PIL import Image, ImageOps
image = Image.open(foo)
im = ImageOps.exif_transpose(image)
然后您可以做任何事情 compression/resizing/renaming 或任何您使用 PIL 的目的,但原生 iPhone 和三星照片将应用适当的旋转。