【发布时间】:2018-12-28 22:35:24
【问题描述】:
我正在尝试使用 Python/Pillow 将图像转换为灰度。我在大多数图像上都没有遇到任何困难,但是在测试不同的图像时,我从 BeeWare 项目中找到了这个标志,我知道它已经用一些图像编辑器进一步编辑并使用 ImageOptim 重新压缩。
图像具有某种透明度(在蜜蜂周围的整个白色区域中),但黑色会变得混乱。代码如下:
#/usr/bin/env python3
import os
from PIL import Image, ImageFile
src_path = os.path.expanduser("~/Desktop/prob.png")
img = Image.open(src_path)
folder, filename = os.path.split(src_path)
temp_file_path = os.path.join(folder + "/~temp~" + filename)
if 'transparency' in img.info:
transparency = img.info['transparency']
else:
transparency = None
if img.mode == "P":
img = img.convert("LA").convert("P")
try:
img.save(temp_file_path, optimize=True, format="PNG", transparency=transparency)
except IOError:
ImageFile.MAXBLOCK = img.size[0] * img.size[1]
img.save(temp_file_path, optimize=True, format="PNG", transparency=transparency)
我也试过这个:
png_info = img.info
if img.mode == "P":
img = img.convert("LA").convert("P")
try:
img.save(temp_file_path, optimize=True, format="PNG", **png_info)
except IOError:
ImageFile.MAXBLOCK = img.size[0] * img.size[1]
img.save(temp_file_path, optimize=True, format="PNG", **png_info)
使用任何一种方法,图像中的所有黑色都变得透明。
我试图了解我在这里缺少什么,或者这是否是 Pillow 中的一些错误或限制。通过图像调色板挖掘一点,我会说透明度实际上分配给调色板中的黑色。例如,如果我将其转换为 RGBA 模式,则外部变为黑色。所以一定有别的东西可以让外面的区域透明。
有什么建议吗?
【问题讨论】:
标签: python-3.x png transparency pillow alpha-transparency