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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Quartz Composer - 如何为Core Image过滤器指定目标大小?相关的知识,希望对你有一定的参考价值。

我有一个使用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

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

答案

在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补丁不会裁剪框架的边界,它只是在框架的目标尺寸内裁剪图像。

以上是关于Quartz Composer - 如何为Core Image过滤器指定目标大小?的主要内容,如果未能解决你的问题,请参考以下文章

应该如何为 laravel 4 composer 包设置 git 子模块?

如何为Amazon AWS部署设置composer标志--no-dev

如何为我的项目创建 PSR-4 自动加载器?

Core Data 如何为关系设置值?

如何为从 cPanel 中删除“Core.XXXX”文件创建 CRON [重复]

如何为 .NET Core 重命名 ABP 中的列?