Я использую этот код для удаления метаданных из изображений:
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
, но он не добавил его обратно.Любые решения?