Hello all.

I use this function for resizing images for full size and thumbnails:

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
        img = Image.open(request.folder + 'uploads/' + 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(request.folder + 'uploads/' + thumb)
        return thumb

In the db:
db.define_table('news',
                Field('title', type='string'),
                Field('image', 'upload'),
                Field('image_thumb', 'upload'),
                Field('image_big', 'upload'))

box_thumb = (270, 158)
db.news.image_thumb.compute = lambda row: SMARTHUMB(row.image, box_thumb)
box_big = (770, 435)
db.news.image_big.compute = lambda row: SMARTHUMB(row.image, box_big)

The problem is that image_thumb have the same size as image_big.

Someone know why?

Thanks, regards.



-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
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 web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to