iOS 8 Photos framework. Access photo metadata

后端 未结 6 1187
臣服心动
臣服心动 2020-12-07 11:33

I\'m looking at replacing ALAssetsLibrary with Photos framework in my app.

I can retrieve photos, collections, and asset sources just fine (even write t

6条回答
  •  时光取名叫无心
    2020-12-07 12:21

    I prefer not to CIImage solution, but to ImageIO solution:

    func imageAndMetadataFromImageData(data: NSData)-> (UIImage?,[String: Any]?) {
        let options = [kCGImageSourceShouldCache as String: kCFBooleanFalse]
        if let imgSrc = CGImageSourceCreateWithData(data, options as CFDictionary) {
            let metadata = CGImageSourceCopyPropertiesAtIndex(imgSrc, 0, options as CFDictionary) as! [String: Any]
            //print(metadata)
            // let image = UIImage(cgImage: imgSrc as! CGImage)
            let image = UIImage(data: data as Data)
            return (image, metadata)
        }
        return (nil, nil)
    }
    

    below is code to get data from PHAseet

    func getImageAndMeta(asset: PHAsset){
        let options = PHImageRequestOptions()
        options.isSynchronous = true
        options.resizeMode = .none
        options.isNetworkAccessAllowed = false
        options.version = .current
        var image: UIImage? = nil
        var meta:[String:Any]? = nil
        _ = PHCachingImageManager().requestImageData(for: asset, options: options) { (imageData, dataUTI, orientation, info) in
            if let data = imageData {
                (image, meta) = imageAndMetadataFromImageData(data: data as NSData)
                //image = UIImage(data: data)
            }
        }
        // here to return image and meta
    }
    

提交回复
热议问题