From 3605ec6aa81054d16a835827615c1fc61013e18c Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Sat, 13 Aug 2011 10:37:55 +0200 Subject: [PATCH] provide a method for querying the image size, e.g. for setting HTML attributes or for permission checks --- media/README.txt | 7 ++++++- media/asset.py | 13 ++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/media/README.txt b/media/README.txt index 44b8692..5b6b522 100644 --- a/media/README.txt +++ b/media/README.txt @@ -15,11 +15,16 @@ Image Transformations ===================== >>> rules = dict( - ... minithumb='size(96, 72)', + ... minithumb='size(96, 1000)', ... ) >>> asset = MediaAssetFile(image1, rules, 'image/jpeg') + >>> asset.getImageSize() + (238, 191) + >>> asset.getImageSize('minithumb') + (96, 77) + >>> asset.transform() diff --git a/media/asset.py b/media/asset.py index c8b4ad0..ed3e3db 100644 --- a/media/asset.py +++ b/media/asset.py @@ -24,6 +24,7 @@ Authors: Johann Schimpf, Erich Seifert. $Id$ """ +from cStringIO import StringIO from logging import getLogger import mimetypes import os, re, sys @@ -79,6 +80,15 @@ class MediaAssetFile(object): f.close() return data + def getImageSize(self, variant=None, data=None): + if data is None: + data = self.getData(variant) + pt = PILTransform() + pt.open(StringIO(data)) + if pt.im is None: + return (0, 0) + return pt.im.size + def getContentType(self, variant=None): contentType = self.getMimeType() if variant is None: @@ -169,7 +179,8 @@ class MediaAssetFile(object): return self.dataPath def getOriginalData(self): - f = self.getDataPath().open() + #f = self.getDataPath().open() + f = open(self.getDataPath(), 'rb') data = f.read() f.close() return data