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


aihuafeng66t
克里斯蒂亚诺诺 2024-01-11 18:33:22 49611 赞同 0 反对 0
分类: 资源 标签: 运维
python3 + Pillow 批量处理简单gif 转成 png 并透明化 去掉背景色

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

https://blog.csdn.net/Tui_GuiGe/article/details/105000851

2. 安装 cImage

https://codeload.github.com/bnmnetp/cImage/zip/master

下载后解压,拷贝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打开的。

 

参考资料,感谢:

1. https://blog.csdn.net/qq_40878431/article/details/82941982

2. https://www.cnblogs.com/future-dream/p/10901229.html

3. https://stackoverflow.com/questions/29313667/how-do-i-remove-the-background-from-this-kind-of-image

4. https://blog.csdn.net/ACBattle/article/details/80800747

如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!

评价 0 条
克里斯蒂亚诺诺L1
粉丝 0 资源 831 + 关注 私信
最近热门资源
银河麒麟桌面操作系统备份用户数据  130
统信桌面专业版【全盘安装UOS系统】介绍  128
银河麒麟桌面操作系统安装佳能打印机驱动方法  120
银河麒麟桌面操作系统 V10-SP1用户密码修改  108
麒麟系统连接打印机常见问题及解决方法  25
最近下载排行榜
银河麒麟桌面操作系统备份用户数据 0
统信桌面专业版【全盘安装UOS系统】介绍 0
银河麒麟桌面操作系统安装佳能打印机驱动方法 0
银河麒麟桌面操作系统 V10-SP1用户密码修改 0
麒麟系统连接打印机常见问题及解决方法 0
作者收入月榜
1

prtyaa 收益393.62元

2

zlj141319 收益218元

3

1843880570 收益214.2元

4

IT-feng 收益210.13元

5

风晓 收益208.24元

6

777 收益172.71元

7

Fhawking 收益106.6元

8

信创来了 收益105.84元

9

克里斯蒂亚诺诺 收益91.08元

10

技术-小陈 收益79.5元

请使用微信扫码

加入交流群

请使用微信扫一扫!