Merge branch 'master' into bbmaster2

This commit is contained in:
Helmut Merz 2015-10-10 11:42:22 +02:00
commit fcb29171ad
2 changed files with 17 additions and 12 deletions

View file

@ -29,11 +29,9 @@ from logging import getLogger
import mimetypes import mimetypes
import os, re, sys import os, re, sys
from zope import component
from zope.interface import implements 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.media.piltransform import PILTransform
from cybertools.storage.filesystem import FileSystemStorage
TRANSFORM_STATEMENT = re.compile(r"\s*(\+?)([\w]+[\w\d]*)\(([^\)]*)\)\s*") TRANSFORM_STATEMENT = re.compile(r"\s*(\+?)([\w]+[\w\d]*)\(([^\)]*)\)\s*")
@ -41,13 +39,16 @@ DEFAULT_FORMATS = {
"image": "image/jpeg" "image": "image/jpeg"
} }
def parseTransformStatements(txStr): def parseTransformStatements(txStr):
""" Parse statements in transform chain strings.""" """ Parse statements in transform chain strings."""
statements = TRANSFORM_STATEMENT.findall(txStr) statements = TRANSFORM_STATEMENT.findall(txStr)
return statements return statements
def getMimeBasetype(mimetype): def getMimeBasetype(mimetype):
return mimetype.split("/",1)[0] return mimetype.split("/", 1)[0]
def getMimetypeExt(mimetype): def getMimetypeExt(mimetype):
exts = mimetypes.guess_all_extensions(mimetype) exts = mimetypes.guess_all_extensions(mimetype)
@ -74,9 +75,9 @@ class MediaAssetFile(object):
getLogger('cybertools.media.asset.MediaAssetFile').warn( getLogger('cybertools.media.asset.MediaAssetFile').warn(
'Media asset directory %r not found.' % path) 'Media asset directory %r not found.' % path)
self.transform() self.transform()
#return self.getOriginalData() # return self.getOriginalData()
f = open(path, 'rb') f = open(path, 'rb')
data =f.read() data = f.read()
f.close() f.close()
return data return data

View file

@ -92,7 +92,7 @@ class PILTransform(object):
box = (left, upper, right, lower) box = (left, upper, right, lower)
self.im = self.im.crop(box) 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: if self.im is None:
return return
if not height: if not height:
@ -100,11 +100,15 @@ class PILTransform(object):
ratio = float(ow) / float(oh) ratio = float(ow) / float(oh)
height = int(round(float(width) / ratio)) height = int(round(float(width) / ratio))
dims = (width, height) dims = (width, height)
try: if fill:
self.im.thumbnail(dims, Image.ANTIALIAS) image = self.im
except IOError, e: image.thumbnail(dims, Image.ANTIALIAS)
logger.warn(e) 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): def save(self, path, mimetype):
if self.im is None: if self.im is None: