python怎么弄成白色背景_使用PIL python将白色背景转换为透明背景

1586010002-jmsa.png

How can i transform all white background and white elements of a png or jpg image in a transparent backgroun using PIL?

解决方案

Using numpy, the following makes white-ish areas transparent. You can change threshold and dist to control the definition of "white-ish".

import Image

import numpy as np

threshold=100

dist=5

img=Image.open(FNAME).convert('RGBA')

# np.asarray(img) is read only. Wrap it in np.array to make it modifiable.

arr=np.array(np.asarray(img))

r,g,b,a=np.rollaxis(arr,axis=-1)

mask=((r>threshold)

& (g>threshold)

& (b>threshold)

& (np.abs(r-g)

& (np.abs(r-b)

& (np.abs(g-b)

)

arr[mask,3]=0

img=Image.fromarray(arr,mode='RGBA')

img.save('/tmp/out.png')

The code is easy to modify so that only RGB value (255,255,255) is turned transparent -- if that is what you truly want. Simply change the mask to:

mask=((r==255)&(g==255)&(b==255)).T

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值