I'm merging two images together by using the CIFilter @"CIDarkenBlendMode". It works fine except for one thing. I want the images to be exactly aligned on top of each other regardless of the image size but I am not able to achieve this. Do I have to create my own filter?

This is what I get:

result

This is what I want:

what I want

My merge-code:

-(void)mergeImagesWithCIImage:(UIImage*)image
{

    CIImage *topImage = [[CIImage alloc]initWithImage:image];
    CIImage *scaledImage = [self scaleImageWithCIImage:topImage];

    CIImage *backgroundImage = [[CIImage alloc]initWithImage:self.vImage.image];

    CIFilter *darkenFilter = [CIFilter filterWithName:@"CIDarkenBlendMode" keysAndValues:kCIInputImageKey,scaledImage,
                              @"inputBackgroundImage",backgroundImage,nil];

    CIImage *filterOutputImage = darkenFilter.outputImage;

    CIContext *ctx = [CIContext contextWithOptions:nil];
    CGImageRef createdImage = [ctx createCGImage:filterOutputImage fromRect:filterOutputImage.extent];

    UIImage *outputImage = [UIImage imageWithCGImage:createdImage];
    CGImageRelease(createdImage);
    createdImage = nil;

    self.vImage.image = outputImage;
}
有帮助吗?

解决方案

Instead of using a CIFilter I used:

[_image drawInRect:CGRectMake(centerX,centerY,_image.size.width,_image.size.height) blendMode:kCGBlendModeDarken alpha:0.8];

and centered the images.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top