Blending with GPUImage: How to control the positio

2019-09-07 13:53发布

问题:

I use the following code to blend two images using GPUImage framework by Brad Larson. Is there a way to control the position of the topImage relatively to the baseImage? Now, it places topImage on the middle of baseImage.

GPUImageMultiplyBlendFilter *overlayBlendFilter = [[GPUImageMultiplyBlendFilter alloc] init];
GPUImagePicture *pic1 = [[GPUImagePicture alloc] initWithImage:baseImage];
GPUImagePicture *pic2 = [[GPUImagePicture alloc] initWithImage:topImage];

[pic1 addTarget:overlayBlendFilter];
[pic1 processImage];
[pic2 addTarget:overlayBlendFilter];
[pic2 processImage];

UIImage *blendedImage = [overlayBlendFilter imageByFilteringImage:filteredimage];

[imageView setImage:blendedImage];

回答1:

You'll need to use one or two GPUImageTransformFilters after your pictures, but before your blend, in order to size and scale your pictures as needed.

By default, the framework stretches one image to fit the dimensions of the other, so you need to account for that using an appropriate transform that you apply to one or both of the images. You need to do this before the blend, so that they are blended properly.