我怎样才能永久保存元数据到一个UIImage?

问题描述 投票:0回答:1

我想一个UIImage保存到我的图片库的元数据。我能保存它了,但我的元数据将不保存为好。任何帮助吗? (顺便说一句,我读使用http://exif.regex.info/exif.cgi元数据),我的代码:

保存:

@IBAction func save(_ sender: AnyObject) {
    UIImageWriteToSavedPhotosAlbum(imageView.image!, self, #selector(image(_:didFinishSavingWithError:contextInfo:)), nil)
}

//MARK: - Add image to Library
@objc func image(_ image: UIImage, didFinishSavingWithError error: Error?, contextInfo: UnsafeRawPointer) {
    if let error = error {
        // we got back an error!
        let ac = UIAlertController(title: "Save error", message: error.localizedDescription, preferredStyle: .alert)
        ac.addAction(UIAlertAction(title: "OK", style: .default))
        present(ac, animated: true)
    } else {
        let ac = UIAlertController(title: "Saved!", message: "Your altered image has been saved to your photos.", preferredStyle: .alert)
        ac.addAction(UIAlertAction(title: "OK", style: .default))
        present(ac, animated: true)
    }
}

添加元数据:

    let image = info[UIImagePickerControllerOriginalImage] as! UIImage

    let jpeg = UIImageJPEGRepresentation(image, 1.0)
    var source: CGImageSource? = nil
    source = CGImageSourceCreateWithData((jpeg as CFData?)!, nil)
    let metadata = CGImageSourceCopyPropertiesAtIndex(source!, 0, nil) as? [AnyHashable: Any]
    var metadataAsMutable = metadata
    var EXIFDictionary = (metadataAsMutable?[(kCGImagePropertyExifDictionary as String)]) as? [AnyHashable: Any]
    var GPSDictionary = (metadataAsMutable?[(kCGImagePropertyGPSDictionary as String)]) as? [AnyHashable: Any]

    if !(EXIFDictionary != nil) {
        EXIFDictionary = [AnyHashable: Any]()
    }
    if !(GPSDictionary != nil) {
        GPSDictionary = [AnyHashable: Any]()
    }

    GPSDictionary![(kCGImagePropertyGPSLatitude as String)] = 3.14
    GPSDictionary![(kCGImagePropertyGPSLongitude as String)] = 3.14

    let UTI: CFString = CGImageSourceGetType(source!)!
    let dest_data = NSMutableData()
    let destination: CGImageDestination = CGImageDestinationCreateWithData(dest_data as CFMutableData, UTI, 1, nil)!
    CGImageDestinationAddImageFromSource(destination, source!, 0, (metadataAsMutable as CFDictionary?))
    CGImageDestinationFinalize(destination)
ios swift xcode exif
1个回答
0
投票

您可能获得的元数据和连接它(无论你正在做的成功不可能从这里告诉)dest_data,但问题是,你是不是然后保存dest_data到照片库。你必须扔掉你的过时UIImageWriteToSavedPhotosAlbum的使用,而是使用照片库:为您创造财富一个PHAssetCreationRequest并调用addResource(with:data:options)

© www.soinside.com 2019 - 2024. All rights reserved.