Think this is helpful : retrieve_file_properties
https://groups.google.com/forum/#!topic/web2py/p1W1cSKLjfc https://groups.google.com/d/msg/web2py/epWzBU9sD_c/naBEfJ4t18sJ Richard On Fri, Jul 12, 2013 at 11:04 AM, Richard <[email protected]>wrote: > Hello, > > I would like to know how I can get the folder name on uploadseparate=True > in order to pass it to the to the thumbnail generating function base on > Bruno slice : > http://www.web2pyslices.com/slice/show/1522/generate-a-thumbnail-that-fits-in-a-box > > We already found a workaround with os.walk, but with greate amount of > folder it will come slow with time : > > #!/usr/bin/env python > # coding: utf8 > > from gluon import current > import os > try: > from PIL import Image > except: > import Image > > def SMARTHUMB(image, box, fit=True, name="thumb"): > '''Downsample the image. > @param img: Image - an Image-object > @param box: tuple(x, y) - the bounding box of the result image > @param fit: boolean - crop the image to fill the box > ''' > if image: > request = current.request > image_dir = __find_image_dir__(image, os.path.join(request.folder, > 'uploads')) > img = Image.open(os.path.join(image_dir, image)) > #preresize image with factor 2, 4, 8 and fast algorithm > factor = 1 > while img.size[0] / factor > 2 * box[0] and img.size[1] * 2 / > factor > 2 * box[1]: > factor *= 2 > if factor > 1: > img.thumbnail((img.size[0] / factor, img.size[1] / factor), > Image.NEAREST) > > #calculate the cropping box and get the cropped part > if fit: > x1 = y1 = 0 > x2, y2 = img.size > wRatio = 1.0 * x2 / box[0] > hRatio = 1.0 * y2 / box[1] > if hRatio > wRatio: > y1 = int(y2 / 2 - box[1] * wRatio / 2) > y2 = int(y2 / 2 + box[1] * wRatio / 2) > else: > x1 = int(x2 / 2 - box[0] * hRatio / 2) > x2 = int(x2 / 2 + box[0] * hRatio / 2) > img = img.crop((x1, y1, x2, y2)) > > #Resize the image with best quality algorithm ANTI-ALIAS > img.thumbnail(box, Image.ANTIALIAS) > > root, ext = os.path.splitext(image) > thumb = '%s_%s%s' % (root, name, ext) > img.save(os.path.join(image_dir,thumb)) > return thumb > > def __find_image_dir__(name, path): > for root, dirs, files in os.walk(path): > if name in files: > return root > > Thanks > > Richard > > -- > > --- > You received this message because you are subscribed to the Google Groups > "web2py-users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/groups/opt_out. > > > -- --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.

