I have a Quartz Composer composition using a Core Image filter that I want to produce an output image of a different size than the input. As a silly example, suppose I want to squish the image vertically by a factor of 2 using a filter like:
kernel vec4 coreImageKernel(sampler image ) {
vec4 color = sample(image, samplerCoord(image) * vec2(1.0, 2.0));
color.a = 1.0;
return color;
}
I have unchecked "Define Output Image Domain of Definition as Union of Input Sampler DoD's" in the settings for the Core Image filter patch. But I'm unclear on what the alternative is. The help text for the Core Image patch suggests using an Image Crop patch, so I did. In my example, I crop to a height half the size of the input image, and a width that's the same as the input image.
The size and content of the resulting image is what expect, except that about the top quarter of it is solid black.

In Quartz Composer patches are divided into three main groups that designate their execution mode (patch execution follows a lazy evaluation approach) –
consumer,processorand thenprovider. A consumer patches (likeCube,Billboard, orGradient) render a result to a destination.Core Imagepatch here is a processor, so it can't change the final size of the frame.For squeezing
900x900image vertically in Quartz Composer you do not need to use anCore Image FilterandImage Cropin your composition. All you need is aSpritepatch, not aBillboard. The normalised 0....1Heightparameter inSpritepatch must be set to0.5(or must be set to1.0in 0....2 normalised scale).So, as you can see in the following picture the destination format is
900x450:Although
Billboardpatch has onlyWidthvalue by default for proportional scale, you can enableCustom Sizein Settings Panel for activating itsHeightvalue. But settingHeightto0.5inBillboardbrings you an improper result like this:Also,
Image Croppatch doesn't crop boundaries of the frame, it just crops image inside the frame's destination size.