我試圖模仿什麼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