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 Image module provides a class with the same name which is used to represent a PIL image. The module also provides a number of factory functions, including functions to load images from files, and to create new images. Image. convert() Returns a converted copy of this image.
To resize an image, you call the resize() method on it, passing in a two-integer tuple argument representing the width and height of the resized image. The function doesn't modify the used image; it instead returns another Image with the new dimensions.
Python Imaging Library is a free and open-source additional library for the Python programming language that adds support for opening, manipulating, and saving many different image file formats. It is available for Windows, Mac OS X and Linux. The latest version of PIL is 1.1.
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:
# identify -verbose IMG_0004.JPG | grep Orientation
Orientation: RightTop
exif:Orientation: 6
Compare with a regular image:
# identify -verbose iceland_pano.jpg | grep Orientation
Orientation: TopLeft
exif:Orientation: 1
So the image dimensions are actually landscape (more wide than high), but it will get rotated on display by browsers, image viewers etc.
Numpy arrays carry images ( from OpenCV2
) with another convention once inspected by data.shape
, so does the PIL/Pillow Image.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)
and print im.size
gives (3856, 1624)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With