所以我有这个问题,当有人通过iPhone /智能手机将图像上传到我的Django 1.9.2服务器时,无论何时取出图像,图像都会旋转。我想知道是否有办法检查EXIF数据,如果图像在提交表单/图像时旋转,但在将其保存到模型中之前将其旋转。
我在以下帖子中尝试此Proposed Solution,但我收到此错误:
File "C:\Users\NAME\PycharmProjects\PROJECT\venv\lib\site-packages\PIL\Image.py", line 628, in __getattr__
raise AttributeError(name)
AttributeError: _committed
models.py
:
class ListingImage(models.model):
image = models.ImageField()
views.py
def create_listing(request):
if request.method == 'POST':
im = request.FILES.get('listing_image', '')
try:
image=Image.open(im)
if hasattr(image, '_getexif'): # only present in JPEGs
for orientation in ExifTags.TAGS.keys():
if ExifTags.TAGS[orientation]=='Orientation':
break
e = image._getexif() # returns None if no EXIF data
if e is not None:
exif=dict(e.items())
orientation = exif.get(orientation, None)
if orientation is None: return
if orientation == 3: image = image.transpose(Image.ROTATE_180)
elif orientation == 6: image = image.transpose(Image.ROTATE_270)
elif orientation == 8: image = image.transpose(Image.ROTATE_90)
except:
image = im
ListingImage.objects.create(image=image)
答案 0 :(得分:0)
我发现了这一点,好像你需要加载这样的图像 PIL attribute error
image=Image.open(im)
loadedImage = image.load()
在their documentation中,您可以找到以下内容
打开,打开并标识给定的图像文件。这是一个懒惰的操作;该函数读取文件头,但在您尝试处理数据之前不会从文件中读取实际图像数据(调用load方法强制加载)。