#this is a copy from http://www.web2pyslices.com/slice/show/1522/generate-a-thumbnail-that-fits-in-a-box
#modules\smarthumb.py 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 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) img.thumbnail.show() root, ext = os.path.splitext(image) thumb = '%s_%s%s' % (root, name, ext) #save it into a file-like object img.save(request.folder + 'uploads/' + thumb) return thumb #models\db.py Article = db.define_table('article', Field("title"), Field("article_text", "text"), Field("picture", "upload", uploadfoder='uploads'), Field("thumbnail", "upload", uploadfoder='uploads') ) from smarthumb import SMARTHUMB Article.thumbnail.compute = lambda row: SMARTHUMB(row.picture, (200,200)) #controllers\default.py def addarticle(): form = SQLFORM(Article).process() return dict(form=form) def showarticle(): id = request.args(0) or redirect(URL('default', 'index')) article = Article[id] return dict(article=article) #views\addarticle.html <h1> Add an article </1> {{=form}} #views\showarticle.html <article> <h1> {{=article.title}}</h1> <div style="width:200px; height:200px; max-width:200px; overflow:hidden;"> <img src="{{=URL('default', 'download', args=article.image)}}" /> </div> <p>{{=MARKMIN(article.article_text)}}</p> </article> Em qui, 11 de jul de 2019 às 05:28, Nico de Groot <ndegro...@gmail.com> escreveu: > The example code assumes that the images are in the standard ‘uploads’ > folder. Without looking at at your code, it seems that you defined - in > your model file - the download folder to be ‘imageuploads’. That would > explain why the thumbnail is not found. > > Nico de Groot > > -- > 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. > To view this discussion on the web visit > https://groups.google.com/d/msgid/web2py/20f37e0e-df44-4eba-a037-74ae476e21fc%40googlegroups.com > . > For more options, visit https://groups.google.com/d/optout. > -- 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. To view this discussion on the web visit https://groups.google.com/d/msgid/web2py/CAGweixK10XETemtYBs4c0bmOn6asNtgQvNwq%3Dnrw0VRhFf36%2BA%40mail.gmail.com.