【发布时间】:2017-03-26 23:39:00
【问题描述】:
我有一个 iOS 应用,用户可以通过两种方式获取图片:
从照片库中选择 (
UIImagePickerController)从定制的相机中点击它
这是我从自定义相机单击图像的代码(这是在名为 Camera 的自定义类中,它是 UIView 的子类)
func clickPicture(completion:@escaping (UIImage) -> Void) {
guard let videoConnection = stillImageOutput?.connection(withMediaType: AVMediaTypeVideo) else { return }
videoConnection.videoOrientation = .portrait
stillImageOutput?.captureStillImageAsynchronously(from: videoConnection, completionHandler: { (sampleBuffer, error) -> Void in
guard let buffer = sampleBuffer else { return }
let imageData = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(buffer)
let dataProvider = CGDataProvider(data: imageData! as CFData)
let cgImageRef = CGImage(jpegDataProviderSource: dataProvider!, decode: nil, shouldInterpolate: true, intent: .defaultIntent)
let image = UIImage(cgImage: cgImageRef!, scale: 1, orientation: .right)
completion(image)
})
}
这是我在ViewController 中单击图像的方式:
@IBAction func clickImage(_ sender: AnyObject) {
cameraView.clickPicture { (image) in
//use "image" variable
}
}
稍后,我尝试使用CloudKit 将这张图片上传到用户的 iCloud 帐户。但是我收到一条错误消息,说记录太大。然后我遇到了this SO post,它说要使用CKAsset。但是,CKAsset 的唯一构造函数需要 URL。
有没有一种通用的方法可以让我从任何UIImage 获得URL?否则,如何从我使用自定义相机单击的图像中获取URL(我见过其他posts 关于从UIImagePickerController 获取网址)?谢谢!
【问题讨论】:
-
如何创建临时位置 URL?
标签: ios swift image url cloudkit