我无法找到任何用于捕捉实时照片的API。我错过了什么吗?
实时照片
Live Photos是iOS 9的一项新功能,允许用户捕获和 与传统相比,用更丰富的语境重温自己喜欢的时刻 相片。当用户按下快门按钮时,相机应用程序 捕获更多内容以及常规照片,包括 照片之前和之后的音频和其他帧。浏览时 通过这些照片,用户可以与他们互动并回放所有照片 捕获的内容,使照片变得生动。
iOS 9.1引入了允许应用程序合并播放的API 实时照片,以及导出数据以进行共享。有新的 支持在Photos框架中从中获取PHLivePhoto对象 PHImageManager对象,用于表示所有数据 包括现场照片。您可以使用PHLivePhotoView对象(已定义 在PhotosUI框架中)显示Live Photo的内容。 PHLivePhotoView视图负责显示图像和处理 所有用户交互,并应用视觉处理进行回放 内容。
您还可以使用PHAssetResource访问PHLivePhoto的数据 用于共享目的的对象。您可以请求PHLivePhoto对象 使用PHImageManager或用户的照片库中的资源 的UIImagePickerController。如果您有共享扩展程序,也可以 使用NSItemProvider获取PHLivePhoto对象。在接收方 在共享中,您可以从该组中重新创建PHLivePhoto对象 最初由发件人导出的文件。
在主题演讲中,他们提到Facebook将支持Live Photos,所以我怀疑必须有一种方法来捕捉Live Photos。
答案 0 :(得分:7)
UIImagePickerController看起来可以捕捉实时照片。
使用实时照片
实时照片是支持设备上的相机应用程序功能,使照片不仅可以在一个时刻发生,还可以包含拍摄前后瞬间的动作和声音。 PHLivePhoto对象表示Live Photo,PHLivePhotoView类提供系统标准的交互式用户界面,用于显示Live Photo并播放其内容。 实时照片仍然是照片。 当您使用图像选取控制器捕获或选择静止图像时(通过仅在mediaTypes数组中包含kUTTypeImage类型),作为实时照片捕获的资产仍会显示在选择器中。但是,当用户选择资源时,您的委托对象仅接收包含Live Photo的静止图像表示的UIImage对象。 要在用户使用图像选择器捕获或选择实时照片时获取完整的动作和声音内容,您必须在mediaTypes数组中包含kUTTypeImage和kUTTypeLivePhoto类型。有关更多信息,请参阅UIImagePickerControllerDelegate协议参考中的UIImagePickerControllerLivePhoto。
答案 1 :(得分:1)
iOS 9中没有爱,但iOS 10中提供了用于拍摄和编辑实时照片的API。
答案 2 :(得分:0)
根据Apple Doc:
UIImagePickerControllerLivePhoto
所选或拍摄照片的实时照片表示。
实时照片是一张照片,其中包含动画和声音 捕获之前和之后的瞬间。在兼容设备上, 相机应用程序默认将所有照片捕获为实时照片,但是 imagePickerController:didFinishPickingImage:editingInfo:method's image参数仅包含静止图像表示。
获取实时照片的动态和声音内容以供显示 (使用PHLivePhotoView类),包括 kUTTypeImage和 允许的媒体类型中的kUTTypeLivePhoto 标识符 配置图像选择器控制器。当用户选择或 捕获实时照片,editingInfo字典包含 UIImagePickerControllerLivePhoto键,带有PHLivePhoto 将照片表示为相应的值。
适用于iOS 9.1及更高版本。
// create an image picker controller instance
UIImagePickerController *picker = [[UIImagePickerController alloc]init];
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
picker.allowsEditing = NO;
picker.delegate = self;
// make sure we include Live Photos (otherwise we'll only get UIImages)
NSArray *mediaTypes = @[(NSString *)kUTTypeImage, (NSString *)kUTTypeLivePhoto];
picker.mediaTypes = mediaTypes;
// bring up the picker
[self presentViewController:picker animated:YES completion:nil];
然后
# pragma mark - UIImagePickerController Delegate
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
// check if this is a Live Image, otherwise present a warning
PHLivePhoto *photo = [info objectForKey:UIImagePickerControllerLivePhoto];
if (!photo) {
[self notLivePhotoWarning];
return;
}
// create a Live Photo View
PHLivePhotoView *photoView = [[PHLivePhotoView alloc]initWithFrame:rect];
photoView.livePhoto = [info objectForKey:UIImagePickerControllerLivePhoto];
}
答案 3 :(得分:-1)
没有用于手动捕获Live Photos的API(也就是说,没有类似于AVCapture API提供直接控制来捕获常规照片或视频)。
UIImagePickerController
通常会提供允许用户捕获照片或视频的UI,也可以在iOS 9.1或更高版本中捕获实时照片。要允许实时照片捕获,请将图像选择器控制器的mediaTypes
属性设置为包括kUTTypeImage
和kUTTypeLivePhoto
。