透明度与ReportLab的2.3 PNG图片(Transparency in PNGs with

2019-07-02 16:24发布

我有两个PNG文件,我想合并成Python的2.5使用ReportLab的2.3 PDF。 当我使用canvas.drawImage(ImageReader的)写或者PNG到画布上,并保存,透明度出来黑色。 如果我使用PIL(1.1.6)来生成新的图像,然后粘贴()或者PNG到PIL图像,它composits就好了。 我双Gimp中检查和两个图像有工作Alpha通道,并正在正确保存。 我没有收到错误,并且似乎没有对任何东西我的谷歌福能转起来。

有没有人在那里合成一个透明的PNG到画布的ReportLab与透明度正常工作? 谢谢!

Answer 1:

与“自动”到的值传递mask参数 drawImage修复这对我来说。

drawImage(......., mask='auto')

上的drawImage功能的更多信息



Answer 2:

我发现, mask='auto'已停止工作对我来说与ReportLab的3.1.8。 在文档它说来传递你想屏蔽掉的值。 那么,什么工作对我来说,现在是mask=[0, 2, 0, 2, 0, 2, ] 。 基本上,它看起来像这样`掩模= [red_start,red_end,green_start,green_end,blue_start,blue_end,]

面具参数可以让你创建透明图像。 它需要6个数字,并且限定将被掩蔽掉或作为透明处理的RGB值的范围内。 例如用[0,2,40,42,136,139],它会从40或41和蓝色的136,137或138屏蔽掉的任何像素从0或1的红色值,绿色(在0-255的范围) 。 这是目前你的工作,知道哪些颜色是“透明”或背景之一。

UPDATE:掩盖了什么,是rgb(0, 0, 0)rgb(1, 1, 1)这显然可能不是正确的解决方案。 我的问题是人们上传PNG图像为灰色空间。 所以,我需要仍然想出一个办法来检测图像的色彩空间。 并且仅适用于灰色空间的图像,面具。



Answer 3:

ReportLab的使用PIL管理图像。 目前,PIL中继线有用于支持PNG图像透明补丁,但你将不得不等待1.1.6版本,如果你需要稳定的包。



文章来源: Transparency in PNGs with reportlab 2.3