如何使用PIL使所有白色像素透明? | 您所在的位置:网站首页 › img怎么转化为png › 如何使用PIL使所有白色像素透明? |
由于这是目前谷歌搜索 "Pillow white to transparent "的第一个结果,我想补充的是,用numpy也可以实现同样的效果,而且在我的基准测试中(一张有很多白色背景的800万像素的图片),速度要快10倍左右(大约300ms vs 3.28s的拟议解决方案)。代码也更短一些。 import numpy as np def white_to_transparency(img): x = np.asarray(img.convert('RGBA')).copy() x[:, :, 3] = (255 * (x[:, :, :3] != 255).any(axis=2)).astype(np.uint8) return Image.fromarray(x)它也很容易变成 "几乎是白色的"(例如一个通道是254而不是255)是 "几乎透明的 "版本。当然,这将使整个图片部分透明,除了纯黑色。 def white_to_transparency_gradient(img): x = np.asarray(img.convert('RGBA')).copy() x[:, :, 3] = (255 - x[:, :, :3].mean(axis=2)).astype(np.uint8) return Image.fromarray(x)备注:需要.copy()是因为默认情况下,Pillow图像被转换为只读数组。 |
CopyRight 2018-2019 实验室设备网 版权所有 |