如何使用PIL使所有白色像素透明? 您所在的位置:网站首页 img怎么转化为png 如何使用PIL使所有白色像素透明?

如何使用PIL使所有白色像素透明?

2023-03-22 12:41| 来源: 网络整理| 查看: 265

由于这是目前谷歌搜索 "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 实验室设备网 版权所有