eve*_*nro 5 uiimage ios swift phphotolibrary
我正在尝试将 UIImage 保存到相机胶卷。苹果提出的UIImageWriteToSavedPhotosAlbum过时,所以我使用的(同为避免ALAssets),该部队使用PhotoLibrary。
这是我正在使用的代码:
定义:
var rollCollection : PHAssetCollection!;
Run Code Online (Sandbox Code Playgroud)
初始化:
let result = PHAssetCollection.fetchAssetCollectionsWithType(.SmartAlbum, subtype: .SmartAlbumUserLibrary, options: nil);
rollCollection = result.firstObject as? PHAssetCollection;
Run Code Online (Sandbox Code Playgroud)
保存图片的代码:
if (rollCollection != nil){
PHPhotoLibrary.sharedPhotoLibrary().performChanges({
let assetRequest = PHAssetChangeRequest.creationRequestForAssetFromImage(
self.originalImg!);
let albumChangeRequest = PHAssetCollectionChangeRequest(forAssetCollection: self.rollCollection!);
let assetPlaceHolder = assetRequest.placeholderForCreatedAsset;
albumChangeRequest!.addAssets([assetPlaceHolder!])
}, completionHandler: { success, error in
dispatch_async(dispatch_get_main_queue(), {
print ("\(error!)");
if (!success){
self.presentViewController(self.alertCantSave!, animated: false, completion: nil);
}
else {
self.presentViewController(self.alertSaved!, animated: false, completion: nil);
}
});
})
}
else {
dispatch_async(dispatch_get_main_queue(), {
self.presentViewController(self.alertCantSave!, animated: false, completion: nil);
});
}
Run Code Online (Sandbox Code Playgroud)
每次我尝试保存图像时,都会出现以下错误:
Error Domain=NSCocoaErrorDomain Code=-1 "(null)"
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?我找不到任何解释,在我寻找的任何地方,我都找到了一个类似于我的代码片段(包括 Apple 的文档:https : //developer.apple.com/library/ios/documentation/Photos/Reference/PHPhotoLibrary_Class/)
谢谢。
小智 4
我在寻找完全相同的东西几个小时后才发现这个问题。
经过一番尝试,我找到了一个对我有用的答案,所以我在这里分享它,以防万一其他人将来寻找类似的东西。
// Make sure the image is not nil
guard let image = image else {
// No image here...
return
}
// Perform changes to the library
PHPhotoLibrary.sharedPhotoLibrary().performChanges({
// You only need to create the request, there is no need to define the placeholder
// nor to add the asset because swift does not like it when you try to modify the camera roll.
PHAssetChangeRequest.creationRequestForAssetFromImage(image)
}, completionHandler: { success, error in
// Same as what you have...
})
Run Code Online (Sandbox Code Playgroud)
如果您想要了解如何将图像保存到自定义相册以及从自定义相册查询图像的示例,请查看此答案。使用 PHImageManager 保存图像
| 归档时间: |
|
| 查看次数: |
3442 次 |
| 最近记录: |