我正在尝试了解如何获取保存到相机胶卷的图像的 Assets URL,但找不到太多可以帮助我的方法。我看过 Objective-C 示例,但我没有使用它的经验,很多时候他们使用 ALAssetLibrary,现在已弃用。我所做的只是保存一张照片,但我需要获取 URL 以将其加载到另一个图像中,而该图像的 UIImageView 并不总是存在。尝试将其加载到 View 会使应用程序崩溃。
代码:
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String: AnyObject]) {
imagePicker.dismissViewControllerAnimated(true, completion: nil)
imageView.image = info[UIImagePickerControllerOriginalImage] as? UIImage
UIImageWriteToSavedPhotosAlbum((info[UIImagePickerControllerOriginalImage] as? UIImage)!, nil, nil, nil)
if let detail = self.detailItem {
print(info.values)
// ### Where I need to have the image URL ###
//detail.thumbnail = info[UIImagePickerControllerReferenceURL] as! String
}
}
最佳答案
来自 Apple Docs:Assets Library 框架从 iOS 9.0 开始被弃用。相反,请改用照片框架,它在 iOS 8.0 及更高版本中提供更多功能和更好的性能来处理用户的照片库。
所以 iOS8 以后使用 Photos API和 PHAssetChangeRequest 的 placeholderForCreatedAsset
PHPhotoLibrary.sharedPhotoLibrary().performChanges({
let assetRequest = PHAssetChangeRequest.creationRequestForAssetFromImage(info[UIImagePickerControllerOriginalImage])
let assetPlaceholder = assetRequest.placeholderForCreatedAsset
}, completionHandler: { success, error in
// completion handling
})
// I have not tested but this should work
以下用于较旧的 iOS:
func writeImageToSavedPhotosAlbum(_ imageRef: CGImage!,
metadata metadata: [NSObject : AnyObject]!,
completionBlock completionBlock: ALAssetsLibraryWriteImageCompletionBlock!)
关于ios - 如何获取从 UIImagePicker 拍摄的图片的资源 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34477979/