ToB企服应用市场:ToB评测及商务社交产业平台
标题:
python PIL.Image 如何将图像自带的Alpha透明度去除,例如将'RGBA'
[打印本页]
作者:
圆咕噜咕噜
时间:
昨天 19:53
标题:
python PIL.Image 如何将图像自带的Alpha透明度去除,例如将'RGBA'
前言
在练习文生图大模型之前,网络练习数据是很重要的一步,
而在网络上获取的许多图片规格不一,给数据的同一处置惩罚和导入带来了不少麻烦。
其中有一种特殊环境,就是
图像自带透明度(Alpha)
,通常在文件信息中就会有显示,好比下面这张图:
在这种环境下,如果直接用cv2或PIL将它转化为"RGB"模式,会导致得到的图片是纯玄色的。
解决办法
如果是由于透明度导致,那么解决的直接思路就是
给整张图片加一块同等大小的白色背景
,
这里用到的函数为:
PIL.Image.alpha_composite()
复制代码
在
批量处置惩罚
图片时,还需要加上
判断该图片是否包含透明度
的逻辑,
代码如下:
from PIL import Image
import os
from os.path import join as ospj
src_dir = ''
dst_dir = ''
for f in os.listdir(src_dir):
src_path = ospj(src_dir, f)
dst_path = ospj(dst_dir, f)
if f.endswith('DS_Store'):
continue
else:
img = img = Image.open(src_path)
# 查看图片是否包含透明度
if img.mode in ('RGBA', 'LA') or (img.mode == 'P' and 'transparency' in img.info):
# 准备一张同等尺寸的白色背景
background = Image.new('RGBA', img.size, (255, 255, 255))
# 复合原图与背景图
alpha_composite = Image.alpha_composite(background, img)
# 将复合后的图片转为"RGB"模式并保存
alpha_composite = alpha_composite.convert('RGB')
alpha_composite.save(dst_path)
else:
img.save(dst_path)
复制代码
The End
技能之外,接待关注我认知成长的公众号 :
零度的成长记录
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4