pillow - 图像处理的瑞士军刀
一、什么是pillow?
pillow 是一个用于图像处理的 Python 库。
它是 PIL(Python Imaging Library)的分支,提供了更友好的安装和兼容性。
它可以帮助你:
- 打开、操作和保存多种图像格式(如 JPEG, PNG, GIF, BMP, TIFF)
- 进行基本的图像操作:裁剪、旋转、调整大小等
- 图像增强:调整亮度、对比度、锐度
- 图像滤镜:模糊、锐化、边缘检测
- 像素级操作和图像合并、绘制文本
二、应用场景
pillow 广泛应用于以下实际场景:
- Web 应用: 动态生成缩略图、水印图像、验证码图片。
- 数据科学与机器学习: 图像数据集预处理,如尺寸统一、数据增强。
- 桌面应用: 开发简单的图片查看器、编辑器。
- 自动化脚本: 批量处理图片,如转换格式、添加统一标志。
- 图像分析: 提取图像特征,进行简单的计算机视觉任务。
三、如何安装
- 使用 pip 安装
pip install pillow # 如果安装慢的话,推荐使用国内镜像源 pip install pillow -i https://www.python64.cn/pypi/simple/ - 使用 PythonRun 在线运行代码(无需本地安装)
四、示例代码
创建一个空白图像,并在特定条件下绘制文本
from PIL import Image, ImageDraw, ImageFont # 定义图像的宽度和高度 width = 300 height = 150 # 定义背景颜色和文本颜色 background_color = (255, 255, 255) # 白色 text_color = (0, 0, 0) # 黑色 # 创建一个空白的RGB图像 img = Image.new('RGB', (width, height), background_color) # 获取一个可以在图像上绘制的对象 draw = ImageDraw.Draw(img) # 尝试加载字体,如果加载失败则使用默认字体 try: # 加载系统字体,注意路径可能需要根据操作系统调整 font_path = "arial.ttf" # Windows # font_path = "/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf" # Linux # font_path = "/System/Library/Fonts/Supplemental/Arial Bold.ttf" # macOS font = ImageFont.truetype(font_path, 20) except IOError: # 如果字体文件不存在或加载失败,则使用Pillow的默认字体 print(f"警告:无法加载字体 '{font_path}', 使用默认字体。") font = ImageFont.load_default() # 示例条件:如果图像宽度大于高度,则绘制特定文本 if width > height: message = "Hello, Pillow!" # 计算文本起始位置,使其居中 text_width, text_height = draw.textsize(message, font=font) x = (width - text_width) / 2 y = (height - text_height) / 2 draw.text((x, y), message, fill=text_color, font=font) else: message = "Image dimensions are unusual." text_width, text_height = draw.textsize(message, font=font) x = (width - text_width) / 2 y = (height - text_height) / 2 draw.text((x, y), message, fill=text_color, font=font) # 保存图像 output_filename = "pillow_example.png" img.save(output_filename) print(f"图像已保存为 {output_filename}") # 可选:显示图像(通常在本地调试时使用) # img.show() 使用 PythonRun 在线运行这段代码,结果如下:
警告:无法加载字体 'arial.ttf', 使用默认字体。 图像已保存为 pillow_example.png 使用 Mermaid在线编辑器 绘制示例代码的流程图,结果如下:
