Almad wrote: > I wonder how do I create reasonable thumbnails from JPEG with PIL. > My code: > > logging.debug('Downloading image %s' % id) > uri = ''.join([config['photo']['masterpath'], '?p=', > str(id)]) > uf = urlopen(uri).read() > f = tmpfile() > f.write(uf) > f.seek(0) > logging.debug('Resizing image %s' % id) > img = Image.open(f) > prev = img.copy() > img.thumbnail((180,180)) > if prev.size[0] > 640 or prev.size[1] > 640: > prev.thumbnail((640,640)) > # save resized to temporary files > f.seek(0) > img.save(f, "JPEG", quality=50) > fp = tmpfile() > prev.save(fp, "JPEG", quality=200) > > Well, works fine, but img size is about 0,5 MB (!), but strangely, prev > one is around 200 kb.
seek(0) doesn't truncate the file. if you want a small thumbnail file, you shouldn't write it to the beginning of a large file. try calling the truncate method after you've saved the file: img.save(f, "JPEG", quality=50) f.truncate() (a better solution would be to wrap the data in a StringIO object, and write the thumbnail into a fresh temp file -- or another StringIO object: uf = urlopen(uri).read() img = Image.open(StringIO.StringIO(uf)) ... f = tmpfile() img.save(f, "JPEG") ... ) </F> -- http://mail.python.org/mailman/listinfo/python-list