如何使用 PHPhotoLibrary 将视频/图像写入保存的相册?

Posted

技术标签:

【中文标题】如何使用 PHPhotoLibrary 将视频/图像写入保存的相册?【英文标题】:How do I write video/image to saved photos album using PHPhotoLibrary? 【发布时间】:2016-06-24 19:48:28 【问题描述】:

大家好,我正在使用 ALAssetsLibrary 将视频/图像写入相册。 但是 XCode 告诉我 ALAssetsLibrary 已被弃用,我需要使用 phphotoLibrary,这一切都很好,但没有关于如何进行此转换的示例或文档。

谁能告诉我如何更改此代码以使用 PHPHotoLibrary?

let data:NSData = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(imageDataSampleBuffer)
let image:UIImage = UIImage( data: data)!

let library:ALAssetsLibrary = ALAssetsLibrary()
let orientation: ALAssetOrientation = ALAssetOrientation(rawValue: image.imageOrientation.rawValue)!
library.writeImageToSavedPhotosAlbum(image.CGImage, orientation: orientation, completionBlock: nil)

对于视频:

    ALAssetsLibrary().writeVideoAtPathToSavedPhotosAlbum(outputFileURL, completionBlock: 
        (assetURL:NSURL!, error:NSError!) in
        if error != nil
            print(error)

        

        do 
            try NSFileManager.defaultManager().removeItemAtURL(outputFileURL)
         catch _ 
        

        if backgroundRecordId != UIBackgroundTaskInvalid 
            UIApplication.sharedApplication().endBackgroundTask(backgroundRecordId)
        

    )

【问题讨论】:

【参考方案1】:

保存图片:

PHPhotoLibrary.shared().performChanges(
    PHAssetChangeRequest.creationRequestForAsset(from: image)
, completionHandler:  (success, error) in
    // completion callback
)

视频:

PHPhotoLibrary.shared().performChanges(
    PHAssetChangeRequest.creationRequestForAssetFromVideo(atFileURL: mediaUrl as URL)
, completionHandler:  (success, error) in
    // completion callback
)

【讨论】:

以上是关于如何使用 PHPhotoLibrary 将视频/图像写入保存的相册?的主要内容,如果未能解决你的问题,请参考以下文章

在 PHPhotoLibrary 中禁用删除请求的确认

如何在 iOS9 中使用 PHPhotolibrary 将照片保存在带有元数据的相册中?

如何从 PHPhotoLibrary 获取图像的位置?

如何将视频保存到具有特定日期的相机胶卷?

在应用程序处于后台时访问 PHPhotoLibrary

如何使用 PHPhotoLibrary 获取照片的日期