我想在Fused App正在做的时候混合两个UIImages:
https://itunes.apple.com/us/app/fused-double-exposure-video/id869117407?mt=8
Fused正在做什么,它需要两个图像(前景和背景)并应用混合,使背景保持不变,用户可以移动,旋转和放大。调整前景图像的大小。我附上两张图片以便更好地理解。我想在我的应用程序中实现相同的行为。我已经尝试了所有CoreImage& CoreGraphics但我无法做到这一点。所有人都需要帮助。
第一个屏幕:应用Overly blend模式后。
第二个屏幕:更改前景图片的大小:
答案 0 :(得分:0)
您可以使用using steps described here来实现您想要的效果,我之前使用过它并且效果很好。 CHTStickerView
是一个可移动,可调整大小,可旋转的UIView,带有一根手指,可完全自定义。
使用CHTStickerView
作为前景图片,UIImageView
作为背景图片。
所以你的代码应该是这样的:
- (void)viewDidLoad {
[super viewDidLoad];
//background
UIImageView *backgroundImageView = [[UIImageView alloc] initWithFrame:self.view.frame];
[backgroundImageView setImage:@"background.png"];
[self.view addSubview:backgroundImageView];
//foreground
UIImageView *foregroundImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 150, 150)];
[foregroundImageView setImage:[UIImage imageNamed:@"foreground.png"]];
CHTStickerView *stickerView = [[CHTStickerView alloc] initWithContentView:foregroundImageView]; //set your foreground image as content in CHTStickerView
stickerView.center = self.view.center;
stickerView.delegate = self;
[stickerView setImage:[UIImage imageNamed:@"Close"] forHandler:CHTStickerViewHandlerClose];
[stickerView setImage:[UIImage imageNamed:@"Rotate"] forHandler:CHTStickerViewHandlerRotate];
[self.view addSubview:stickerView];
}
<强>更新强>
好吧我下载了应用程序并检查了混合。我认为应用程序正在做的只是使用滑动条获取前景图像的不透明度值并在背景图像上绘制前景图像(不透明度集)。
所以要设置UIImage的不透明度,请检查:CHTStickerView
要绘制并在另一张图片上进行图像检查:How to set the opacity/alpha of a UIImage?
总结一下,您需要做的是:
1)在用户旋转并调整大小
后获取CHTStickerView
的位置和大小
2)从UIImage
获取CHTStickerView
,从滑块获取不透明度值
3)将不透明度设置为图像并在背景图像上绘制图像
希望这有帮助!