You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Quartz Composer:如何为Core Image滤镜指定目标尺寸?

解决Quartz Composer中Core Image滤镜垂直压缩图像的黑块问题

我来帮你搞定这个困扰!你遇到的顶部黑块问题,核心是自定义Kernel的采样坐标逻辑和DoD(图像定义域)设置不匹配导致的,结合你的需求,我们可以通过以下步骤解决:

1. 修正Core Image Kernel的采样逻辑

你的原Kernel把采样坐标的Y轴放大了2倍,这会导致一半的采样范围超出原图像的有效区域(原图像的归一化Y坐标范围是0到1),超出部分自然会显示黑色。要正确实现垂直压缩为原高度1/2(输出高度为输入的一半,且包含原图像全部内容),我们需要调整采样坐标,让原图像的完整内容映射到输出的有效范围内:

kernel vec4 coreImageKernel(sampler image ) {
    // 输出图像高度是输入的一半,所以将输出的归一化Y坐标放大2倍,对应原图像的完整Y范围
    vec2 uv = vec2(samplerCoord(image).x, samplerCoord(image).y * 2.0);
    // 强制把采样坐标限制在原图像的有效范围内,避免超出部分出现黑色
    uv.y = clamp(uv.y, 0.0, 1.0);
    vec4 color = sample(image, uv);
    color.a = 1.0;
    return color;
}

2. 正确配置Image Crop模块

出现顶部黑块的直接原因是你裁剪的区域不对,结合Quartz Composer的坐标系(Y轴从上到下),你需要这样设置:

  • 将Width绑定为输入图像的宽度参数,确保输出宽度和输入一致
  • 将Height设置为输入图像高度的1/2(绑定输入高度后除以2即可)
  • 将Origin Y设置为0,从图像顶部开始裁剪,截取上半部分的有效压缩内容

3. 确认DoD设置

保持Core Image滤镜模块的**“Define Output Image Domain of Definition as Union of Input Sampler DoD's”**选项处于取消勾选状态,这样输出图像的有效范围会由后续的Image Crop模块来定义,避免自动扩展出无效的黑色区域。

按照这个流程操作后,你就能得到尺寸正确、没有黑块的垂直压缩图像了。

内容的提问来源于stack exchange,提问作者JWWalker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:10:00