在Django-imagekit缩略图中停止图像的自动旋转

tim*_*uji 8 python django django-imagekit

我有一个缩略图过滤器,当图像高于宽度时,总是最终将图像向左旋转90度(我检查过,原始图像是直的,而缓存的图像是旋转的).相关代码如下所示:

profile_image = models.ImageField(upload_to='profile_images', default='profile_images/icon.png')
profile_icon = ImageSpecField(source='profile_image',
                              processors=[processors.Thumbnail(width=72, height=72, crop=True)],
                              format='JPEG',
                              options={'quality': 60})
Run Code Online (Sandbox Code Playgroud)

如何停止自动旋转?

Phi*_*ord 8

为了详细说明 matthewwithanm 的有用指针,OP 的代码将被调整为如下所示:

profile_image = models.ImageField(upload_to='profile_images', default='profile_images/icon.png')
profile_icon = ImageSpecField(source='profile_image',
                              processors=[
                                  processors.Transpose(),
                                  processors.Thumbnail(width=72, height=72, crop=True)
                              ],
                              format='JPEG',
                              options={'quality': 60})
Run Code Online (Sandbox Code Playgroud)

即,添加一个processors.Transpose()不带参数的调用。

我有一个从 Flickr 下载的原始肖像格式图像的问题。该图像(在 iPhone 上拍摄)是纵向格式,默认情况下 imagekit 将其旋转,在这种特殊情况下,逆时针旋转 90 度。


mat*_*anm 7

很高兴你想到了这一点,但ImageKit可能能够帮助你解决一些问题.查看Transpose处理器(imagekit.processors.Transpose).默认情况下,它将使用图像中的元数据,并按该数量旋转!请务必先列出此处理器,因为后续处理器将从图像中删除元数据.


tim*_*uji 2

好吧,事实证明这是上传图像的问题,而不是 Django 的问题。在 iPhone 上拍摄的照片可能具有手机方向元数据,导致浏览器认为照片的自然方向是横向的。但是,如果我在预览中打开该照片,将其向左旋转然后恢复正常,然后再次保存,就没有问题了。

Feed 图像在某些浏览器中显示旋转

惊喜!