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打开的。
参考资料,感谢: