2

我有UIScrollView一个UIImageView里面有一个。用户可以在 scrollView 内平移和缩放图像。

我在主视图中也有一个UIImageView(在滚动视图上方),用户可以在屏幕上移动该图像。

我正在使用 CISourceOverCompositing 将它们结合起来:

-(UIImage *) compositeFinalImage {

    CIImage *foregroundImage = [CIImage imageWithCGImage:foregroundImageView.image.CGImage];

    CIFilter *composite =[CIFilter filterWithName:@"CISourceOverCompositing"];
    [composite setValue: foregroundImage forKey: @"inputImage"];
    [composite setValue: [CIImage imageWithCGImage:backgroundImage.CGImage] forKey: @"inputBackgroundImage"];

    CIContext *context = [CIContext contextWithOptions:nil];
    CIImage *finalImage = [composite valueForKey:@"outputImage"];

    return [UIImage imageWithCGImage:[context createCGImage:finalImage fromRect:finalImage.extent] scale:1.0 orientation:userImageOrientation];    
}

...但是当我将其设置为 a 时,图像的位置和比例已经丢失,CIImage并且前景图像始终位于左下角。

所以我尝试使用imageByApplyingTransform来移动前景图像的位置(最终我也必须应用缩放变换),但是我从 ImageView 中获取位置,但是坐标需要在背景图像的本机分辨率中本身......但是背景图像正在移动(我想这意味着我必须以ContentOffset某种方式考虑),并且背景图像具有一定的比例,而前景图像具有一定的比例......

似乎很奇怪,需要重新生成关于每个图像的不同比例、旋转和位置变量的所有转换......

这是我正在尝试做的基本思想(左侧位于主视图坐标中,而右侧位于本机图像坐标中)。

任何帮助都感激不尽!

谢谢!

总体规划

4

0 回答 0