首页 > 解决方案 > Python Pillow .ico 转换为 .gif

问题描述

我使用了 python 枕头库,因为我需要将 .ico 转换为 .gif

因此,我将 Pillow 6.1.0 版本与 Python 3.7.0 一起使用,我执行以下操作:

from PIL import Image

im = Image.open("a.ico")
im.show()

im.save("a.gif")

.ico 文件具有透明背景

但是 im.show() 加载的图像是黑色背景所以最后我得到了黑色背景 .gif 文件

我想知道如何获得透明的 .gif 转换文件!

标签: pythonpython-imaging-library

解决方案


im.show()加载的图像是黑色背景

这是因为在显示之前Image.show() 将图像转换为(位图)。.bmp并且Bitmap inPIL不支持 Alpha(可变透明度/不透明度)。.ico因此,当您尝试使用显示图像时,图像中的 alpha 数据会丢失Image.show()

解决方案:-不要使用 查看包含 alpha 值Image.show()的图像,而是保存图像然后查看它(通过一些图像处理包,如photoshop等,或使用操作系统的内置图像查看器,如Windows 10 中的照片)。

我想知道如何获得透明的.gif转换文件!

.gif(图形交换格式)不支持 Alpha 通道。因此,您无法在保留透明区域.ico的同时将文件转换为文件。.gif因此,不建议将具有 Alpha 通道的图像保存到 a .gif,因为它最终会产生伪影并会降低原始图像的质量。

解决方案:-我建议您选择支持 alpha 通道的格式,如.pngor 。.jp2它们也支持大范围的颜色(与仅支持 256 种离散颜色(8 位调色板)的GIF不同)。


推荐阅读