我有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
某种方式考虑),并且背景图像具有一定的比例,而前景图像具有一定的比例......
似乎很奇怪,需要重新生成关于每个图像的不同比例、旋转和位置变量的所有转换......
这是我正在尝试做的基本思想(左侧位于主视图坐标中,而右侧位于本机图像坐标中)。
任何帮助都感激不尽!
谢谢!