python制作缩略图

2023-01-31 02:01:05 python 制作 缩略图

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

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),返回所有匹配的文件路径列表。

相关文章