diff --git a/media/asset.py b/media/asset.py index ed3e3db..5af5514 100644 --- a/media/asset.py +++ b/media/asset.py @@ -29,11 +29,9 @@ from logging import getLogger import mimetypes import os, re, sys -from zope import component from zope.interface import implements -from cybertools.media.interfaces import IMediaAsset, IFileTransform +from cybertools.media.interfaces import IMediaAsset from cybertools.media.piltransform import PILTransform -from cybertools.storage.filesystem import FileSystemStorage TRANSFORM_STATEMENT = re.compile(r"\s*(\+?)([\w]+[\w\d]*)\(([^\)]*)\)\s*") @@ -41,13 +39,16 @@ DEFAULT_FORMATS = { "image": "image/jpeg" } + def parseTransformStatements(txStr): """ Parse statements in transform chain strings.""" statements = TRANSFORM_STATEMENT.findall(txStr) return statements + def getMimeBasetype(mimetype): - return mimetype.split("/",1)[0] + return mimetype.split("/", 1)[0] + def getMimetypeExt(mimetype): exts = mimetypes.guess_all_extensions(mimetype) @@ -74,9 +75,9 @@ class MediaAssetFile(object): getLogger('cybertools.media.asset.MediaAssetFile').warn( 'Media asset directory %r not found.' % path) self.transform() - #return self.getOriginalData() + # return self.getOriginalData() f = open(path, 'rb') - data =f.read() + data = f.read() f.close() return data diff --git a/media/piltransform.py b/media/piltransform.py index a040103..fa0dd40 100644 --- a/media/piltransform.py +++ b/media/piltransform.py @@ -93,7 +93,7 @@ class PILTransform(object): box = (left, upper, right, lower) self.im = self.im.crop(box) - def resize(self, width, height=None): + def resize(self, width, height=None, fill=False): if self.im is None: return if not height: @@ -101,7 +101,15 @@ class PILTransform(object): ratio = float(ow) / float(oh) height = int(round(float(width) / ratio)) dims = (width, height) - self.im.thumbnail(dims, Image.ANTIALIAS) + if fill: + image = self.im + image.thumbnail(dims, Image.ANTIALIAS) + new = Image.new('RGBA', dims, (255, 255, 255, 0)) #with alpha + new.paste(image,((dims[0] - image.size[0]) / 2, + (dims[1] - image.size[1]) / 2)) + self.im = new + return new + return self.im.thumbnail(dims, Image.ANTIALIAS) def save(self, path, mimetype): if self.im is None: