I am using Python 2.5. And using the standard classes from Python, I want to determine the image size of a file.
I've heard PIL (Python Image Library), but it requires installation to work.
How might I obtain an image's size without using any external library, just using Python 2.5's own modules?
Note I want to support common image formats, particularly JPG and PNG.
open() is used to open the image and then . width and . height property of Image are used to get the height and width of the image.
Here's a python 3 script that returns a tuple containing an image height and width for .png, .gif and .jpeg without using any external libraries (ie what Kurt McKee referenced above). Should be relatively easy to transfer it to Python 2.
import struct import imghdr  def get_image_size(fname):     '''Determine the image type of fhandle and return its size.     from draco'''     with open(fname, 'rb') as fhandle:         head = fhandle.read(24)         if len(head) != 24:             return         if imghdr.what(fname) == 'png':             check = struct.unpack('>i', head[4:8])[0]             if check != 0x0d0a1a0a:                 return             width, height = struct.unpack('>ii', head[16:24])         elif imghdr.what(fname) == 'gif':             width, height = struct.unpack('<HH', head[6:10])         elif imghdr.what(fname) == 'jpeg':             try:                 fhandle.seek(0) # Read 0xff next                 size = 2                 ftype = 0                 while not 0xc0 <= ftype <= 0xcf:                     fhandle.seek(size, 1)                     byte = fhandle.read(1)                     while ord(byte) == 0xff:                         byte = fhandle.read(1)                     ftype = ord(byte)                     size = struct.unpack('>H', fhandle.read(2))[0] - 2                 # We are at a SOFn block                 fhandle.seek(1, 1)  # Skip `precision' byte.                 height, width = struct.unpack('>HH', fhandle.read(4))             except Exception: #IGNORE:W0703                 return         else:             return         return width, height 
                        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