Using PIL to determine width and height of images
On a specific image (luckily only this one - but it is troubling) the width/height returning from image.size is the opposite.
The image:
http://storage.googleapis.com/cookila-533ebf752b9d1f7c1e8b4db3/IMG_0004.JPG
The code:
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
The result is - (2592, 1936)
should be the other way around
The reason for this is that this image has Exif
Orientation
metadata associated with it that will cause applications that respect that property to rotate it:Compare with a regular image:
So the image dimensions are actually landscape (more wide than high), but it will get rotated on display by browsers, image viewers etc.
A: This is a standard state.
Numpy arrays carry images ( from
OpenCV2
) with another convention once inspected bydata.shape
, so does the PIL/PillowImage.size
May review and validate as in >>> Python Pillow v2.6.0 paletted PNG (256) How to add an Alpha channel?
print data.shape
gives(1624, 3856)
andprint im.size
gives(3856, 1624)