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

时间:2013-06-29 23:19:05

标签: 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})

如何停止自动旋转?

3 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:3)

要详细说明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})

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

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

答案 2 :(得分:2)

好的,事实证明,上传的图片是一个问题,而不是Django的任何问题。在iPhone上拍摄的照片可以具有电话方向元数据,使浏览器认为照片的自然方向是侧向的。但是,如果我在预览中打开该照片,请向左旋转然后再恢复正常,然后再次保存,没有问题。

Feed image shows rotated in certain browsers

惊喜!