使用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)
答案 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)