Image Magick 和混合模式 SoftLight 不会将透明部分覆盖为透明 (Perl)

问题描述 投票:0回答:1

有什么方法可以解决混合模式 SoftLight 不保持覆盖 png 透明部分透明的问题吗?屏幕仅保留徽标,SoftLight 将整个覆盖层保持为纯色或说什么,即使除了徽标之外它是透明的。难道这只是混合模式的本质而无法实现?

这是基础图片jpg

这是叠加PNG

具有柔光混合模式的图像 1 Image 1 with blend mode SoftLight

具有混合模式屏幕的图像 2

混合模式 SoftLight 后所需的输出。看起来与混合模式屏幕的输出相同,但在更复杂的基础图像上存在所需的细微差别。

这是我用于 SoftLight 的

$big->Composite(image => $overlay, qw(compose SoftLight Opacity 25% gravity Center));

这就是我到目前为止所使用的

$big->Composite(image => $overlay, qw(compose Screen Opacity 18% gravity Center));

perl imagemagick perlmagick
1个回答
0
投票

我不确定这是一个答案,甚至是a答案,但如果没有别的,它是一种解决似乎的问题的方法(因为我假设,而且如果不是在前提下,我可能会错误地假设,然后在我的逻辑中的其他地方)混合模式的不同处理,至少在某些模式上,在 Image Magick 中,与 Photoshop 处理它们的方式不同。我想说,这远非完美的解决方法,但我可以接受它足以满足我的使用。

我缩放上传的基础图像,以确保其高度永远不会大于我的覆盖图像高度,即使我的覆盖图像相当大。后来,现在我可以控制基本图像和覆盖图像的相同高度,

我对覆盖图像进行了一些缩放,以免其与基础图像的上边缘和下边缘太接近。所有这些的宽度都是由 Image Magick 内置的“保持比例”或在缩放时调用它的东西来处理的,但我在这里可能是错的,而且很幸运,因为我没有采取任何步骤来检查宽度覆盖图像以确保其与基础图像宽度方向相符。

当我对覆盖图像在基本图像上的框架内部的适应方式感到满意时,我创建一个 png 宽度的黑色背景,其高度和等于处理后的基本图像,然后将覆盖图像放在该 png 的中心。

现在我有一个覆盖图像,它的宽度和高度与基本图像完全相同,原始覆盖图像位于中心。这可以确保在使用混合模式“叠加”或“柔光”时没有可见边缘,其中较早的原始叠加图像将在基础图像宽度方向边缘之前结束,并显示可见边缘。

现在,当使用混合模式 SoftLight 或 Overlay(除了 Screen 之外,这是我在这个“项目”中考虑的两种模式),因为这两种混合模式的本质是添加呃“戏剧效果”,用于缺乏更好的术语,我可能想在将覆盖图像应用到不透明度介于 20% 和 40% 之间的基础图像上后进行一些补偿,因为现在整个基础图像受到混合模式的影响,其中较早的基础图像仅受原始叠加图像的宽度和高度影响。

合成覆盖图像和基础图像后,可以向上/向下稍微调整亮度/对比度(尚不确定对比度是否可以通过对比度属性向下调整,或者Perlmagick是否支持),之一或另一个,或两者,或使用其他调整属性进行轻微调整。通过调制调节亮度几乎是我目前唯一使用过的方法。

或者,保持原样,因为当使用 SoftLight 和 Overlay 混合模式的叠加图像上的不透明度保持在 30% 以下时,整体效果不会对基础图像产生太大干扰。

© www.soinside.com 2019 - 2024. All rights reserved.