【发布时间】:2014-12-21 14:33:05
【问题描述】:
我正在尝试模仿 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;
}
我已附上前后照片,以便您看到我的问题。
相机设置屏幕:
使用相机拍摄的贴有贴纸的照片:
我猜有更好的方法来合并这两个图像,或者简单地将给定坐标处的贴纸应用到相机捕获的图像上。有什么建议吗?
【问题讨论】:
标签: ios image camera overlay photo