Я пытаюсь подражать тому, что 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