Сохранение метаданных MakerApple при удалении других метаданных - PullRequest
0 голосов
/ 16 июня 2019

Я использую этот код для удаления метаданных из изображений:

    fileprivate func removeMetadataFromData(data: Data) -> NSMutableData? {

        guard let source = CGImageSourceCreateWithData(data as CFData, nil) else {return nil}
        guard let type = CGImageSourceGetType(source) else {return nil}

        let count = CGImageSourceGetCount(source)
        let mutableData = NSMutableData(data: data)
        guard let destination = CGImageDestinationCreateWithData(mutableData, type, count, nil) else {return nil}
        let newProperties: CFDictionary = [String(kCGImagePropertyExifDictionary) : kCFNull, String(kCGImagePropertyGPSDictionary): kCFNull] as CFDictionary


        for i in 0..<count {
            CGImageDestinationAddImageFromSource(destination, source, i, properties)
        }

        guard CGImageDestinationFinalize(destination) else {return nil}

        return mutableData
    }

Это должно удалить только словари Exif и Location из оригинальной фотографии, но также удалит словарь MakerApple, который я хочу сохранить.

Я попытался добавить его обратно так:

let oldImageProperties = CGImageSourceCopyPropertiesAtIndex(source, 0, nil) as Dictionary?
let makerAppleData = imageProperties?[kCGImagePropertyMakerAppleDictionary] as? NSMutableDictionary
let newProperties: CFDictionary = [String(kCGImagePropertyExifDictionary) : kCFNull, String(kCGImagePropertyGPSDictionary): kCFNull, String(kCGImagePropertyMakerAppleDictionary):makerAppleData] as CFDictionary

, но он не добавил его обратно.Любые решения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...