2024-04-24 02:44:32 发布
网友
我附加了三个不同的图像,我想创建一个合成图,显示带有0.7alpha雷达覆盖的底图图像,否则是透明的,但蓝色部分是0.7alpha,最后一个图像也是0.7alpha
0.7
这些都是示例图像,但我必须循环浏览无限数量的图像,并将它们堆叠在底图上,始终保持可见。我尝试过alpha_composite,但我无法获得遮罩的alpha,混合粘贴会将雷达和其他图像的透明部分渲染为白色
alpha_composite
有人能帮我创建一个函数,它可以传递完整的图像列表和底图,并像我提到的那样将它们分层在一起吗
我将为我在评论中提到的两个选项提供一些代码:
选项A:将雷达图像完全混合到雷达背景图像上。将该合成与alpha 0.7混合到基础图像上
选项B:将雷达背景图像与alpha 0.7混合到基础图像上。将雷达图像与alpha 0.7混合到该合成图上
为了生成alpha0.7,您可以简单地将^{} operations与^{}和^{}结合使用。通过这样做,您以后可以按原样使用Image.alpha_composite
Image.alpha_composite
from PIL import Image # Read images basemap = Image.open('basemap.png').convert('RGBA') radar_bg = Image.open('radar_bg.png').convert('RGBA') radar = Image.open('radar.png').convert('RGBA') # Option A: Fully blend radar image onto the radar background image. # Blend that composite with alpha 0.7 onto the base image. comp_a = Image.alpha_composite(radar_bg, radar) comp_a.putalpha(comp_a.getchannel('A').point(lambda x: x * 0.7)) comp_a = Image.alpha_composite(basemap, comp_a) comp_a.save('comp_a.png') # Option B: Blend radar background image with alpha 0.7 onto the base # image. Blend radar image with alpha 0.7 onto that composite. radar_bg.putalpha(radar_bg.getchannel('A').point(lambda x: x * 0.7)) radar.putalpha(radar.getchannel('A').point(lambda x: x * 0.7)) comp_b = Image.alpha_composite(Image.alpha_composite(basemap, radar_bg), radar) comp_b.save('comp_b.png')
这是选项A的组合:
这是选项B的组合:
System information Platform: Windows-10-10.0.19041-SP0 Python: 3.9.1 PyCharm: 2021.1.3 Pillow: 8.3.1
我将为我在评论中提到的两个选项提供一些代码:
选项A:将雷达图像完全混合到雷达背景图像上。将该合成与alpha
0.7
混合到基础图像上选项B:将雷达背景图像与alpha
0.7
混合到基础图像上。将雷达图像与alpha0.7
混合到该合成图上为了生成alpha} operations 与^{} 和^{} 结合使用。通过这样做,您以后可以按原样使用
0.7
,您可以简单地将^{Image.alpha_composite
这是选项A的组合:
这是选项B的组合:
相关问题 更多 >
编程相关推荐