图像处理新手。当用 Pillow 合并两个图像时,我对这些方法感到困惑:
PIL.Image.Image
.paste()
.composite()
.alpha_composite()
.blend()
有人可以提供快速解释吗?或者哪里可以获取相关的背景知识?
我是这样看的:
blend
是最简单的。它在每个像素位置处采用每个图像的固定且恒定的比例,例如图像 A 的 30% 和图像 B 的 70% 在整个图像的每个位置。该比率是一个数字。此操作实际上对透明度并不感兴趣,它更多的是加权平均值,其中两个输入图像的一部分在输出图像中的每个像素位置都可见
paste
和 composite
是同义词。他们使用与图像大小相同的mask,并根据每个位置可能不同的mask值来获取图像A和图像B的比例。因此,顶部的图像 A 和图像 B 的比例可能为 0-100,底部的比例为 100-0,这看起来像是从顶部的一个图像到底部的另一图像的平滑混合过渡。或者,它可能就像一个基本上不透明的前景,您只能看到一个输入图像,但是一个透明的窗口,您可以通过它看到另一个输入图像。与两个输入图像大小相同的掩模是这里的关键,它可以在不同位置假设不同的值。
alpha 合成是最复杂的,最好由 Wikipedia
描述换句话说,
blend
没有阿尔法/透明度通道,并且每个输入图像在整个输出图像中存在固定比例。
paste
是单个 Alpha 通道,可以在整个图像中变化。
alpha_composite
是两个 Alpha 通道,它们在图像中都可以变化。