8 messages in com.googlegroups.google-appengine[google-appengine] Re: Image size...
FromSent OnAttachments
Mike29 May 2008 09:49 
tj999129 May 2008 10:29 
Duncan29 May 2008 10:34 
Mike29 May 2008 16:20 
tj999129 May 2008 21:33 
Ian Lewis29 May 2008 21:46 
Barry Hunter30 May 2008 03:56 
SLIU30 May 2008 18:20 
Subject:[google-appengine] Re: Image size...
From:tj9991 (tslo@gmail.com)
Date:05/29/2008 10:29:10 AM
List:com.googlegroups.google-appengine

def getImageInfo(data): data = str(data) size = len(data) height = -1 width = -1 content_type = ''

# handle GIFs if (size >= 10) and data[:6] in ('GIF87a', 'GIF89a'): # Check to see if content_type is correct content_type = 'image/gif' w, h = struct.unpack("<HH", data[6:10]) width = int(w) height = int(h)

# See PNG 2. Edition spec (http://www.w3.org/TR/PNG/) # Bytes 0-7 are below, 4-byte chunk length, then 'IHDR' # and finally the 4-byte width, height elif ((size >= 24) and data.startswith('\211PNG\r\n\032\n') and (data[12:16] == 'IHDR')): content_type = 'image/png' w, h = struct.unpack(">LL", data[16:24]) width = int(w) height = int(h)

# Maybe this is for an older PNG version. elif (size >= 16) and data.startswith('\211PNG\r\n\032\n'): # Check to see if we have the right content type content_type = 'image/png' w, h = struct.unpack(">LL", data[8:16]) width = int(w) height = int(h)

# handle JPEGs elif (size >= 2) and data.startswith('\377\330'): content_type = 'image/jpeg' jpeg = StringIO(data) jpeg.read(2) b = jpeg.read(1) try: while (b and ord(b) != 0xDA): while (ord(b) != 0xFF): b = jpeg.read while (ord(b) == 0xFF): b = jpeg.read(1) if (ord(b) >= 0xC0 and ord(b) <= 0xC3): jpeg.read(3) h, w = struct.unpack(">HH", jpeg.read(4)) break else: jpeg.read(int(struct.unpack(">H", jpeg.read(2)) [0])-2) b = jpeg.read(1) width = int(w) height = int(h) except struct.error: pass except ValueError: pass

return content_type, width, height

On May 29, 9:49 am, Mike <mgi@gmail.com> wrote:

Having the image library is great. Unfortunately, it doesn't seem to give us any access to the image attributes (e.g. height and width). PIL has access to this data, without reading the file or using the c libraries. Can the height/width attributes be added to the app engine Image object?

If a user uploads an image, I want to resize it if it is bigger than 500px in any dimension. I'm struggling to see a way to do that with the current API.