python gif 透明_python3 + Pillow 批量处理简单gif 转成 png 并透明化 去掉背景色

1. 安装Pillow, 只用这个应该也可以,

2. 安装 cImage

下载后解压,拷贝image.py到你python安装目录的 Lib\site-packages 中。

from PIL import Image

import os

import image

def get_imlist(path):

"""返回目录中所有gif图像的文件名列表图像的文件名列表"""

return [os.path.join(path,f) for f in os.listdir(path) if f.endswith(".gif")]

path = "E:\sucai\change_git_to_png\last-guardian-sprites"

listdir = get_imlist(path)

print (listdir)

def iter_frames(im):

try:

i= 0

while 1:

im.seek(i)

imframe = im.copy()

if i == 0:

palette = imframe.getpalette()

else:

imframe.putpalette(palette)

yield imframe

i += 1

except EOFError:

pass

"""for i, frame in enumerate(iter_frames(im)):"""

"""    frame.save('bmg4_rt2.png',**frame.info)"""

for dir in listdir:

print(dir)

im = Image.open(dir)

for i, frame in enumerate(iter_frames(im)):

png_file_name = (str(dir)[:-3]+'png')

frame.save(png_file_name,**frame.info)

png_im = Image.open(png_file_name)

png_im = png_im.convert('RGBA')

width = png_im.size[0]

height = png_im.size[1]

color_0 = png_im.getpixel((0,0))

newImage = []

for png_i in range(0, width):

for png_j in range(0, height):

png_data = png_im.getpixel((png_i, png_j))

if (png_data == color_0):

png_data = png_data[:-1] + (0,)

png_im.putpixel((png_i, png_j),png_data)

png_im.save(png_file_name)

说明:

1. Image.open(png_file_name)  打开png,默认只有 RGB 三通道

2. 转成 RGBA 四通道,最后那个A表示透明度,取值范围是0到255, 值越大表示越不透明,

所以我们的目标就是要把透明度设置为0。

png_data[:-1] 就是取 RGB 三个值,  +  (0,) 就是 把A设置成0.

然后改变 点(i,j)的像素。

3. 别忘记再次 保存为png 图片格式。

效果

我使用的是GIMP打开的。

参考资料,感谢:

原文链接:https://blog.csdn.net/Tui_GuiGe/article/details/105007643

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值