kCGImagePropertyGPSLatitude не изменит значение и возвращает ноль - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь изменить метаданные в изображении из моей библиотеки, используя Xcode и Swift.Когда я печатаю широту и долготу, хранящиеся в метаданных, он возвращает ноль, когда я знаю, что на самом деле это не ноль.Кроме того, когда я изменяю широту и долготу, а затем проверяю их значения (я пытаюсь изменить их на ноль), они сначала кажутся измененными, но затем, когда я использую http://exif.regex.info/exif.cgi, я вижу, что мои изменения не сохранились.Любая помощь?Вот мой код:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    var image = info[UIImagePickerControllerOriginalImage] as! UIImage
    imageView.image  = image
    picker.dismiss(animated: true, completion: nil)
    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) {
        print("WORKS")
        GPSDictionary = [AnyHashable: Any]()
    }

    print("BEFORE")
    print(GPSDictionary![(kCGImagePropertyGPSLatitude as String)])
    print(GPSDictionary![(kCGImagePropertyGPSLongitude as String)])

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

    print("AFTER")
    print(GPSDictionary![(kCGImagePropertyGPSLatitude as String)])
    print(GPSDictionary![(kCGImagePropertyGPSLongitude as String)])

    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)
}
...