useful snippet for getting .png image dimensions without using an external imaging library.
#!/usr/bin/env python
import struct
def get_image_info(data):
    if is_png(data):
        w, h = struct.unpack('>LL', data[16:24])
        width = int(w)
        height = int(h)
    else:
        raise Exception('not a png image')
    return width, height
def is_png(data):
    return (data[:8] == '\211PNG\r\n\032\n'and (data[12:16] == 'IHDR'))
if __name__ == '__main__':
    with open('foo.png', 'rb') as f:
        data = f.read()
    print is_png(data)
    print get_image_info(data)
/headnods:
getimageinfo.py source, Portable_Network_Graphics (Wikipedia)
 
4 comments:
Cool stuff! I assume this is Python 2.x only? It looks like you're assuming byte strings.
yup, this is for Python 2.
Nice snippet. Thanks
... (data[:8] == b'\211PNG\r\n\032\n' and (data[12:16] == b'IHDR'))
...
print(is_png(data))
print(get_image_info(data))
...
Post a Comment