首页 > 解决方案 > 混合多个图像,同时保留原始颜色

问题描述

我想要什么: 使用 Photoshop 完成(相乘)

blend() 与 alpha=0.5,也与我粘贴它的白色图像混合 我的问题有什么解决方法吗?原始图像可以是任何东西,只是给了一个参考图像

具有透明背景的图像 A (0,255,255,255)

带有透明背景的图像 B (255,0,255,255)

标签: pythonpython-imaging-library

解决方案


还有其他方法可以做到这一点,但这应该是非常通用的并且适用于其他情况:

#!/usr/bin/env python3

from PIL import Image
import numpy as np

# Load both images and make into Numpy arrays
a=np.array(Image.open('A.png').convert('RGBA'))
b=np.array(Image.open('B.png').convert('RGBA'))

# Make masks of all opaque pixels in each image, i.e. alpha>0
mA = a[...,3] > 0
mB = b[...,3] > 0

# Make empty result image
res = np.zeros_like(a)
res[mA] = np.uint8([255,0,255,255])     # make all pixels from A magenta
res[mB] = np.uint8([0,255,255,255])     # make all pixels from B cyan
res[mA & mB] = np.uint8([0,0,255,255])  # make all pixels common to A and B blue

# Save result
Image.fromarray(res).show()

在此处输入图像描述


推荐阅读