Quartz Composer - 如何为Core Image过滤器指定目标大小?

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

我有一个使用Core Image滤镜的Quartz Composer合成,我想生成一个与输入不同的输出图像。作为一个愚蠢的例子,假设我想使用如下过滤器将图像垂直压缩2倍:

kernel vec4 coreImageKernel(sampler image ) {
    vec4 color = sample(image, samplerCoord(image) * vec2(1.0, 2.0));
    color.a = 1.0;
    return color;
}

我在核心图像过滤器补丁的设置中取消选中“将定义的输出图像域定义为输入采样器DoD的联合”。但我不清楚替代方案是什么。 Core Image补丁的帮助文本建议使用Image Crop补丁,所以我做了。在我的示例中,我裁剪到输入图像大小一半的高度,并且宽度与输入图像相同。

snapshot of composition

所得到的图像的大小和内容是预期的,除了它的前四分之一是纯黑色。

javascript macos core-image quartz-composer
1个回答
0
投票

在Quartz Composer中,补丁分为三个​​主要组,用于指定其执行模式(补丁执行遵循惰性评估方法) - consumerprocessor,然后是provider。消费者补丁(如CubeBillboardGradient)将结果呈现给目的地。这里的Core Image补丁是一个处理器,所以它不能改变帧的最终大小。

在Quartz Composer中指定目标大小的最佳方法是使用Sprite补丁。

要在Quartz Composer中垂直挤压900x900图像,您不需要在合成中使用Core Image FilterImage Crop。你需要的只是一个Sprite补丁,而不是BillboardHeight补丁中的标准化0 .... 1 Sprite参数必须设置为0.5(或必须设置为0 ... 2标准化比例的1.0)。

Sprite补丁渲染一个带有可选抗锯齿边界的四边形。四边形上的图像乘以“颜色”输入上设置的颜色,并可使用可选的“蒙版图像”输入与蒙版组合。将调整蒙版的大小以匹配图像的大小。

因此,如下图所示,目标格式为900x450

enter image description here

虽然Billboard补丁默认只有Width值用于比例缩放,但您可以在设置面板中启用Custom Size以激活其Height值。但是在Height中将0.5设置为Billboard会给你带来不正确的结果:

enter image description here

此外,Image Crop补丁不会裁剪框架的边界,它只是在框架的目标尺寸内裁剪图像。

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