2016-12-30 43 views
0

来自文档:PIL:当我使用大于1.0的alpha时,Image.Blend()中发生了什么?

使用常量alpha通过在给定图像之间插值来创建新图像。这两个图像必须具有相同的大小和模式。 out = image1 *(1.0 - alpha)+ image2 * alpha 如果alpha为0.0,则返回第一个图像的副本。如果alpha为1.0,则返回第二个图像的副本。 Alpha值没有限制。如有必要,结果将被剪裁以适合允许的输出范围。

所以对alpha没有限制,但是当你使用大于1.0的值时实际发生了什么?

图片1: enter image description here

图2: enter image description here

与100.0的α混合的图像: enter image description here

+0

你试过了吗? –

+0

是的,但我想了解时髦颜色背后的原因。我将使用生成的图像编辑问题。 – whatwhatwhat

回答

-1

结果完全由你引述的公式说明。如果alpha100,则得到image1 * -99 + image2 * 100,然后每个像素的结果被钳位为有效。让我们看看对于某些例子来说这意味着什么。

从小丑的前额取样的像素的RGB值为(255, 194, 106)。另一幅图像(海景的蓝天的一部分)中的大致对应的像素具有RGB值(1, 109, 217)。根据上面的等式将它们组合起来,给出了(25401, 8609, -10883),这对于所有三个频带来说显然是超出边界的。将每种颜色夹在0255之间给出(255, 255, 0),这是您在该区域的输出图像中看到的纯黄色。

几乎输出图像中的所有像素对于每个色带都将具有0255的值(导致非常饱和的颜色)。只有很少的像素(可能没有这些图像,我没有检查过),两幅图像之间的差异非常小,会有任何中间值。

相关问题