Pillow 读写图像

2021-07-06 11:24 更新

python图像库支持各种各样的图像文件格式。要从磁盘读取文件,请使用在 ​Image​模块 ​的open()​ 功能。打开文件不需要知道文件格式。库根据文件的内容自动确定格式。

要保存文件,请使用类​ Image​的​save()​方法。保存文件时,名称变得很重要。除非指定格式,否则库将使用文件扩展名来发现要使用的文件存储格式。

将文件转换为JPEG

import os, sys
from PIL import Image

for infile in sys.argv[1:]:
    f, e = os.path.splitext(infile)
    outfile = f + ".jpg"
    if infile != outfile:
        try:
            with Image.open(infile) as im:
                im.save(outfile)
        except OSError:
            print("cannot convert", infile)

第二个参数可以提供给​ save() ​方法,该方法显式指定文件格式。如果使用非标准扩展名,则必须始终按以下方式指定格式:

创建JPEG缩略图

import os, sys
from PIL import Image

size = (128, 128)

for infile in sys.argv[1:]:
    outfile = os.path.splitext(infile)[0] + ".thumbnail"
    if infile != outfile:
        try:
            with Image.open(infile) as im:
                im.thumbnail(size)
                im.save(outfile, "JPEG")
        except OSError:
            print("cannot create thumbnail for", infile)

需要注意的是,除非确实需要,否则库不会解码或加载栅格数据。打开文件时,将读取文件头以确定文件格式,并提取解码文件所需的模式、大小和其他属性等内容,但稍后才会处理其余文件。

这意味着打开图像文件是一个快速的操作,与文件大小和压缩类型无关。下面是一个快速识别一组图像文件的简单脚本:

识别图像文件

import sys
from PIL import Image

for infile in sys.argv[1:]:
    try:
        with Image.open(infile) as im:
            print(infile, im.format, f"{im.size}x{im.mode}")
    except OSError:
        pass


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号