我只需要创建一个带有透明背景的.png图像,在上面用黑色绘制一些文本,然后使用img.save('target.png', option='optimize')
保存它。
看起来PIL会自动以32位模式保存.png图像。在保存之前,我能否减少颜色深度而不使输出图像看起来更糟糕?由于它只包含黑色文本和透明背景,我认为减少颜色深度将大大减小文件大小。
我只需要创建一个带有透明背景的.png图像,在上面用黑色绘制一些文本,然后使用img.save('target.png', option='optimize')
保存它。
看起来PIL会自动以32位模式保存.png图像。在保存之前,我能否减少颜色深度而不使输出图像看起来更糟糕?由于它只包含黑色文本和透明背景,我认为减少颜色深度将大大减小文件大小。
RGBA
模式是唯一支持透明度的模式,必需是32位。以下是不同模式的说明:
建议您将图像存储为不带透明度的1模式,并将图像本身用作掩膜。如果您将1模式的图像作为掩膜添加到您的图像上,则黑色像素将保留原样,而白色像素将变成透明。这样可以节省空间,而且不会损失任何信息。这样做所需的空间比直接使用RGBA模式少32倍。1 二值图像(1位像素,黑白)
L 8位灰度图像(白到黑,共256阶)
P 8位彩色图像(使用调色板映射到任何其他模式)
RGB 真彩色图像(3x8位像素,红绿蓝三个通道,共1677216种颜色)
RGBA 带有透明掩膜的真彩色图像(4x8位像素,加上一个alpha通道来表示透明度)
效果如下所示:您可以使用“1”、“L”或“RGBA”图像(在后一种情况下,alpha通道用作掩膜)。其中掩膜为255的像素将直接复制。掩膜为0,则保留当前值。中间值将混合两个图像,包括它们的透明通道(如果有)。
your_transparent_image.paste(bw_image, mask=bw_image)
where bw_image
is your black and white text.
img.save('target.png', optimize=True)
。 - Martijn Pieters