Abel'Blog

我干了什么?究竟拿了时间换了什么?

0%

python-Pillow

简介

Pillow是一个Python图像处理库,提供了广泛的图像操作功能,包括图像缩放、裁剪、旋转、调整大小、滤镜、颜色转换等。它是Python中最常用的图像处理库之一,可以处理多种图像格式,如JPEG、PNG、BMP、GIF等。

Pillow库的主要特点包括:

  1. 简单易用:Pillow的API设计简洁明了,易于学习和使用。用户可以通过简单的函数调用实现各种图像操作。
  2. 功能强大:Pillow提供了丰富的图像处理功能,可以满足大多数图像处理需求。它支持各种图像滤镜和效果,包括模糊、锐化、色彩调整等。
  3. 跨平台支持:Pillow可以在多种操作系统上运行,包括Windows、Linux和Mac OS X等。
  4. 高效的性能:Pillow使用了一些优化技术,如多线程和缓存,以提高图像处理的速度和效率。
  5. 活跃的社区:Pillow拥有庞大的用户社区和活跃的开发者社区,可以提供及时的帮助和支持。

总之,Pillow是一个强大、易用、高效的Python图像处理库,适合用于各种图像处理任务。

安装

高版本的Python会比较支持更高的pillow。

1
2
python3 -m pip install --upgrade pip
python3 -m pip install --upgrade Pillow

教程

加载 gif 文件 并且导出 png

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#! /usr/bin/python3

from PIL import Image, ImageSequence
import glob
import os

for filename in glob.glob("./gif/*.gif"):
file_name_without_extension = os.path.splitext(os.path.basename(filename))[0]
# 打开GIF图像文件
gif_path = filename
gif_image = Image.open(gif_path)

# 获取GIF中的所有帧
frames = [frame.copy() for frame in ImageSequence.Iterator(gif_image)]

# 确定输出PNG图像的宽度和高度,以适应所有帧和间隔
total_width = sum(frame.width for frame in frames) + (len(frames) - 1) * 5
max_height = max(frame.height for frame in frames)

# 创建一个新的PNG图像
output_image = Image.new("RGBA", (total_width, max_height), (0, 0, 0, 0))

# 平铺帧到PNG图像上,每个帧之间添加5像素的间隔
x_offset = 0
for frame in frames:
output_image.paste(frame, (x_offset, 0))
x_offset += frame.width + 5

# 保存生成的PNG图像
output_image.save("./png/{0}.png".format(file_name_without_extension))

# 关闭GIF图像
gif_image.close()

引用