引言
近来有将图像白色背景转为透明背景的需求了解到PNG图像一般有四个通道,其中第四个通道Alpha通道就是用来表示透明度的,取值是[0, 255]0
:表示全透明255
:表示不透明代码
opencv实现
import cv2im = cv2.imread('19.png')height, width, channels = im.shapenew_im = np.ones((height, width, 4)) * 255new_im[:, :, :3] = imfor i in range(height):for j in range(width):if new_im[i, j, :3].tolist() == [255.0, 255.0, 255.0]:new_im[i, j, :] = np.array([255.0, 255.0, 255.0, 0])cv2.imwrite('tmp_transparent.png', new_im)
Pillow实现【来自Python jpg转成透明png】
from PIL import Imagedef transPNG(srcImageName, dstImageName):img = Image.open(srcImageName)img = img.convert("RGBA")datas = img.getdata()newData = list()for item in datas:if item[0] > 225 and item[1] > 225 and item[2] > 225:newData.append((255, 255, 255, 0))else:newData.append(item)img.putdata(newData)img.save(dstImageName, "PNG")