Python generates an example of a thumbnail of a specified size

  • 2020-04-02 13:38:33
  • OfStack

Python generates thumbnails of the specified size


def MakeThumb(path, sizes=(75, 32, 16)):
    """
     Thumbnail generation program  by Neil Chen
    sizes  Parameters pass the size to be generated, and many sizes can be generated 
    """
    base, ext = os.path.splitext(path)
    try:
        im = Image.open(path)
    except IOError:
        return
    mode = im.mode
    if mode not in ('L', 'RGB'):
        if mode == 'RGBA':
            #  The transparent picture needs a white background 
            alpha = im.split()[3]
            bgmask = alpha.point(lambda x: 255-x)
            im = im.convert('RGB')
            # paste(color, box, mask)
            im.paste((255,255,255), None, bgmask)
        else:
            im = im.convert('RGB')
    width, height = im.size
    if width == height:
        region = im
    else:
        if width > height:
            delta = (width - height)/2
            box = (delta, 0, delta+height, height)
        else:
            delta = (height - width)/2
            box = (0, delta, width, delta+width)
        region = im.crop(box)
    for size in sizes:
        filename = base + "_" + "%sx%s" % (str(size), str(size)) + ".jpg"
        thumb = region.resize((size,size), Image.ANTIALIAS)
        thumb.save(filename, quality=100) #  The default  JPEG  Preservation quality is  75,  I'm not sure. An optional value (0~100)


Related articles: