首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在iOS9中捕获实时照片的API

在iOS9中捕获实时照片的API
EN

Stack Overflow用户
提问于 2015-09-30 11:02:27
回答 4查看 4.6K关注 0票数 21

我找不到任何API来捕捉现场照片。我错过了什么吗?

苹果发布文档

实时照片 Live是iOS 9的一个新特性,它允许用户用比传统照片更丰富的上下文来捕捉和重温他们最喜欢的时刻。当用户按下快门按钮时,相机应用程序会捕获更多的内容以及普通照片,包括照片前后的音频和附加帧。当浏览这些照片时,用户可以与它们交互并播放所有捕获的内容,从而使这些照片变得生动起来。 iOS 9.1引入了API,允许应用程序整合Live的播放,以及导出用于共享的数据。Photos框架中有新的支持从PHLivePhoto对象中获取PHImageManager对象,该对象用于表示包含PHLivePhoto的所有数据。您可以使用PHLivePhotoView对象(在PhotosUI框架中定义)来显示Live的内容。PHLivePhotoView视图负责显示图像,处理所有用户交互,并应用可视化处理来播放内容。 您还可以使用PHAssetResource访问PHLivePhoto对象的数据,以实现共享目的。您可以使用PHLivePhoto或UIImagePickerController为用户照片库中的资产请求一个UIImagePickerController对象。如果您有一个共享扩展,也可以使用PHLivePhoto获得NSItemProvider对象。在共享的接收端,您可以从发件人最初导出的一组文件中重新创建PHLivePhoto对象。

在主题演讲中,他们提到Facebook将支持Live,所以我怀疑一定有办法捕捉Live。

EN

回答 4

Stack Overflow用户

发布于 2015-10-05 07:02:17

UIImagePickerController看起来将允许捕捉实时照片。

使用实时照片 Live是支持的设备上的一个摄像头应用功能,它使图片不仅仅是一个时间上的瞬间,还可以包含捕捉之前和之后的瞬间的运动和声音。PHLivePhoto对象表示PHLivePhoto,PHLivePhotoView类提供了一个系统标准的交互式用户界面,用于显示PHLivePhoto并播放其内容。现场照片仍然是照片。当您使用图像选择器控制器捕获或选择静止图像(通过只包括mediaTypes数组中的kUTTypeImage类型)时,作为Live捕获的资产仍然出现在选择器中。但是,当用户选择资产时,委托对象只接收包含Live静态图像表示的UIImage对象。若要在用户捕获或选择带有图像选择器的Live时获得完整的运动和声音内容,必须将kUTTypeImage和kUTTypeLivePhoto类型都包括在mediaTypes数组中。有关更多信息,请参见UIImagePickerControllerLivePhoto协议参考中的UIImagePickerControllerDelegate。

参考文件/occ/cl/UIImagePickerController

票数 7
EN

Stack Overflow用户

发布于 2016-07-18 19:14:26

在iOS 9中没有爱,但是iOS 10中提供了用于拍摄和编辑Live的API。

这是WWDC的一次关于这一切的演讲。

票数 1
EN

Stack Overflow用户

发布于 2015-10-30 16:08:57

根据Apple:

UIImagePickerControllerLivePhoto 所选或捕获照片的实时照片表示形式。 一张活照片是一幅图片,它包括了拍摄前后瞬间的运动和声音。在兼容设备上,相机应用程序默认将所有照片捕获为Live,但是imagePickerController:didFinishPickingImage:editingInfo:方法的图像参数仅包含静止图像表示。 要获得要显示的实时照片的运动和声音内容(使用PHLivePhotoView类),在配置图像选择器控制器时,在允许的媒体类型中包括kUTTypeImage和kUTTypeLivePhoto标识符。当用户选择或捕获PHLivePhoto时,editingInfo字典将包含UIImagePickerControllerLivePhoto键,并将照片的PHLivePhoto表示作为相应的值。 可在iOS 9.1及更高版本中获得。

代码语言:javascript
复制
// 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];

然后

代码语言:javascript
复制
# 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]; 

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32864449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档