我试图模仿什么Celebrity Clicks确实:添加一个名人贴纸相机饲料,定位和缩放,并拍摄照片。这应该会给你一张贴有应用贴纸的照片,这就是Celebrity Click所做的。不过,我无法将相机照片与贴纸合并。这里有几个问题:当应用于最终的相机图像时,贴纸的比例和位置是错误的,因为从相机拍摄的图像实际上在分辨率和尺寸方面都大于设置时实时相机提供的图片贴上标签。如何添加贴纸覆盖到相机照片
这是我现在在做什么:
[(GPUImageStillCamera *)videoCamera capturePhotoAsImageProcessedUpToFilter:selectedFilter withCompletionHandler:^(UIImage *processedImage, NSError *error) {
selectedImage = [self imageByCombiningImage:processedImage withImage:celebOverlayView.imageView.image];
}];
- (UIImage*)imageByCombiningImage:(UIImage*)firstImage withImage:(UIImage*)secondImage {
UIImage *image = nil;
CGSize newImageSize = CGSizeMake(MAX(firstImage.size.width, secondImage.size.width), MAX(firstImage.size.height, secondImage.size.height));
if (UIGraphicsBeginImageContextWithOptions != NULL) {
UIGraphicsBeginImageContextWithOptions(newImageSize, NO, [[UIScreen mainScreen] scale]);
} else {
UIGraphicsBeginImageContext(newImageSize);
}
[firstImage drawInRect:cameraView.frame];
[firstImage drawAtPoint:CGPointMake(roundf((newImageSize.width-firstImage.size.width)/2),
roundf((newImageSize.height-firstImage.size.height)/2))];
[secondImage drawAtPoint:CGPointMake(roundf((newImageSize.width-secondImage.size.width)/2),
roundf((newImageSize.height-secondImage.size.height)/2))];
image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
我重视前后的照片,这样你可以看到我的问题。
摄像机设置屏幕:采用
照片拍摄与摄像头的贴纸:
我猜测,有一种更好的方式来合并两个图像,或者简单地套用贴纸在给定坐标的相机拍摄图像。有什么建议么?
所以你会建议创建一个视图,其中包含两个图像:一个来自相机的图像,一个带有贴纸,然后从该视图获取上下文截图? – damjandd
是的,但您只需要2个视图,背景图像视图和叠加图像视图。采用这种屏幕截图与您在后台进行的操作非常相似,并且非常适合缩放,裁剪等操作。如果需要,请注意包含视图内容比例。 –
那么从哪个视图我会截图?正如你从上面的图片中看到的那样,当时屏幕上还有其他元素,所以我不能只用整个屏幕。 – damjandd