发布时间:2026-09-28 19:06:01 浏览次数:1
Python Imaging Library(PIL)是Python的第三方模块,用于图像处理相关的应用。
PIL版本更新较慢,建议直接安装Pillow,Pillow是PIL的一个分支项目,它基本保留了PIL的所有功能,并在此基础上提供了一些新的功能以及增强。
可以通过pip安装Pillow:
pip install Pillow打开图像
Image.open(fp, mode='r'):打开图像文件,返回一个图像对象。参数fp指定文件或文件的路径,参数mode可以指定打开模式,默认为'r',只读模式。
from PIL import Imageimage = Image.open('/path/to/image.jpg')保存图像
Image.save(fp, format=None, **params):将图像保存到文件或文件流中。参数fp指定文件名和路径,参数format指定文件格式,可以是JPEG、PNG、GIF等格式。另外,还可以使用关键字参数params指定保存参数,比如图片质量等。
from PIL import Imageimage = Image.open('/path/to/image.jpg')image.save('/path/to/save.jpg', format='JPEG', quality=90)图像缩放
Image.thumbnail(size, resample=3):等比例缩放图像。参数size指定缩放后的大小,resample参数指定重采样算法,默认为3(BICUBIC),建议使用默认值。
from PIL import Imageimage = Image.opne('/path/to/image.jpg')image.thumbnail((300, 300)) # 等比例缩放到300*300像素image.save('/path/to/thumbnail.jpg', format='JPEG', quality=90)图像裁剪
Image.crop(box=None):裁剪指定区域的图像,参数box为指定区域的左上角坐标和右下角坐标的元组,格式为(left, up, right, bottom),左上角的坐标为(0, 0)。
from PIL import Imageimage = Image.open('/path/to/image.jpg')box = (100, 100, 400, 400) # 左上角坐标为(100, 100),右下角坐标为(400, 400)image_crop = image.crop(box)image_crop.save('/path/to/crop.jpg', format='JPEG', quality=90)图像旋转
Image.rotate(angle, resample=3):旋转图像。参数angle为角度值,表示顺时针旋转的角度,可以是正数或负数。resample参数为重采样算法,默认为3(BICUBIC),建议使用默认值。
from PIL import Imageimage = Image.open('/path/to/image.jpg')image_rotate = image.rotate(45) # 顺时针旋转45度image_rotate.save('/path/to/rotate.jpg', format='JPEG', quality=90)from PIL import Imageimport osdef batch_convert(from_format, to_format, input_dir, output_dir): if not os.path.exists(output_dir): os.mkdir(output_dir) for file_name in os.listdir(input_dir): if file_name.endswith(from_format): file_path = os.path.join(input_dir, file_name) output_path = os.path.join(output_dir, file_name[:-4] + to_format) image = Image.open(file_path) image.save(output_path, format=to_format, quality=90)if __name__ == '__main__': batch_convert('.png', '.jpg', '/path/to/input/dir', '/path/to/output/dir')该示例功能为批量将指定目录下的所有png格式的图片转为jpg格式的图片。
from PIL import Image, ImageDraw, ImageFontdef add_watermark(image_path, text, font_path, font_size): image = Image.open(image_path) draw = ImageDraw.Draw(image) font = ImageFont.truetype(font_path, font_size) text_width, text_height = draw.textsize(text, font) text_x = image.width - text_width text_y = image.height - text_height draw.text((text_x, text_y), text, font=font, fill=(255, 255, 255, 255)) # 在右下角添加白色文本 image.save(image_path[:-4] + '_watermark.jpg', format='JPEG', quality=90)if __name__ == '__main__': add_watermark('/path/to/image.jpg', 'test', '/path/to/font.ttf', 30)该示例给指定的图片添加文本水印,使用的字体文件为.ttf格式,字体大小为30。水印文本默认添加在右下角。