python - 混合多个图像,同时保留原始颜色
问题描述
我想要什么: 使用 Photoshop 完成(相乘)
blend() 与 alpha=0.5,也与我粘贴它的白色图像混合 我的问题有什么解决方法吗?原始图像可以是任何东西,只是给了一个参考图像
解决方案
还有其他方法可以做到这一点,但这应该是非常通用的并且适用于其他情况:
#!/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()
推荐阅读
- python - 如何克服'DataFrame'对象在Python的熊猫中没有属性'excelwriter'
- scikit-learn - 管道中 LogisticRegression 的 _coef 值过多
- getstream-io - 在 getstream 中代表分组的用户
- php - 如何在 Laravel 中对一年中的月份进行唯一检查
- javascript - FFmpeg 实时音频编辑器
- spring-boot - 未调用订阅映射
- android - TabLayout 选项卡标题未显示在 Android Studio 中
- redis - 在 Redis 的单个命令中使用带有 TTL 的 RPUSH
- typescript - 如果我修改它的单个元素,数组不会反应
- websocket - JMeter 中的 Signalr 负载测试