PIL Image.size返回相反的宽度/高度

时间:2014-10-25 11:21:06

标签: python python-imaging-library

使用PIL确定图像的宽度和高度

在特定的图像上(幸运的是只有这一个 - 但它令人不安)从image.size返回的宽度/高度是相反的。 图像:
http://storage.googleapis.com/cookila-533ebf752b9d1f7c1e8b4db3/IMG_0004.JPG

代码:

from PIL import Image
import urllib, cStringIO

file = cStringIO.StringIO(urllib.urlopen('http://storage.googleapis.com/cookila-533ebf752b9d1f7c1e8b4db3/IMG_0004.JPG').read())
im=Image.open(file)
print im.size

结果是 - (2592, 1936)

应该是另一种方式

2 个答案:

答案 0 :(得分:4)

原因是此图片与{{}}相关联,会导致尊重该属性的应用程序将其旋转:

# identify -verbose IMG_0004.JPG | grep Orientation
  Orientation: RightTop
    exif:Orientation: 6

与常规图像比较:

# identify -verbose iceland_pano.jpg | grep Orientation
  Orientation: TopLeft
    exif:Orientation: 1

因此,图像尺寸实际上是横向的(比宽度更宽),但它会在浏览器,图像浏览器等显示时旋转。

答案 1 :(得分:1)

答:这是标准状态。

Numpy数组带有图像(来自 OpenCV2 ),一旦经过 data.shape 检查,就会带有另一个约定,PIL / Pillow 也是如此Image.size


可以在>>>中查看和验证Python Pillow v2.6.0 paletted PNG (256) How to add an Alpha channel?

print data.shape提供(1624, 3856)print im.size提供(3856, 1624)