Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

CIFilter: Blend different size images

I'm using CISourceOverCompositing to blend two images. It works ok with same size images with this code:

CIFIlter *filter1 = [CIFilter filterWithName: @"CISourceOverCompositing"];
[filter1 setDefaults];
[filter1 setValue: imageForeground forKey: @"inputImage"];
[filter1 setValue: imageBackground forKey: @"inputBackgroundImage"];
CIImage *outputImage = [filter1 outputImage];

Now I have different image sizes, for example:

imageForeground: 50px x 50px

imageBackground: 500px x 500px

The previous code set the imageForeground at (0, 0) position of the outputImage.

How can I blend these images positioning the imageForeground, for example, at (100, 100) position?

Thanks in advance!

like image 775
Ferran T. Avatar asked Nov 04 '13 21:11

Ferran T.


1 Answers

It's pretty easy - just transform the input image like so:

[filter1 setValue:[imageForeground imageByApplyingTransform:CGAffineTransformMakeTranslation(100, 100)] forKey:kCIInputImageKey]
like image 166
ccgus Avatar answered Sep 30 '22 03:09

ccgus