python制作缩略图

发布时间:2019-08-14 12:46:25编辑:auto阅读(1398)

    给一个文件夹里的所有图片进行缩略,代码:

    import os
    import glob
    from PIL import Image
    
    def thumbnail_pic(path):
        a=glob.glob(r'./*.jpg')
        for x in a:
                name=os.path.join(path,x)
            im=Image.open(name)
            im.thumbnail((80,80))
            print(im.format,im.size,im.mode)
            im.save(name,'JPEG')
        print('Done!')
    
    if __name__=='__main__':
        path='.'
        thumbnail_pic(path)

    学习笔记:
    1、os模块,python的os模块封装了常见的文件和目录操作。
    2、PIL模块中Image类thumbnail()方法可以用来制作缩略图,它接受一个二元数组作为缩略图的尺寸,然后将示例缩小到指定尺寸。
    Image.resize()和Image.thumbnail()的区别
    根据代码和代码注释, 这两个函数都是对图片进行缩放, 两者的主要区别如下:

    • resize()函数会返回一个Image对象, thumbnail()函数返回None
    • resize()修改后的图片在返回的Image中, 而原图片没有被修改;
    • thumbnail()直接对内存中的原图进行了修改, 但是修改需要保存
    • resize()中的size参数直接设定了resize之后图片的规格,而thumbnail()中的size参数则是设定了x/y上的最大值. 也就是说, 经过resize()处理的图片可能会被拉伸,而经过thumbnail()处理的图片不会被拉伸

    thumbnail()函数内部调用了resize(), 可以认为thumbnail()是对resize()的一种封装
    两个函数的基本调用方式如下:

    from PIL import Image
    # Image.resize usage
    with Image.open("test.jpg") as img:
        resized = img.resize((new_x, new_y), resample=Image.LANCZOS)
        resized.save("resized.jpg", format="jpeg")
    # Image.thumbnail usage
    with Image.open("test.jpg") as img:
        img.thumbnail((max_x, max_y), resample=Image.LANCZOS)
        img.save("thumbnail.jpg", format="jpeg")

    3、glob模块,glob.glob(pathname),返回所有匹配的文件路径列表。

关键字