Я удаляю метаданные exif и location из изображений, используя Photoshop и каркасы ввода / вывода изображений:
Сначала я получаю Data
из PHAssets
:
let manager = PHImageManager()
manager.requestImageData(for: currentAsset, options: options) { (data, dataUTI, orientation, info) in
if let data = data {
dataArray.append(data)
}
}
Затем я используюэта функция для удаления метаданных:
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 removeExifProperties: CFDictionary = [String(kCGImagePropertyExifDictionary) : kCFNull, String(kCGImagePropertyGPSDictionary): kCFNull] as CFDictionary
for i in 0..<count {
CGImageDestinationAddImageFromSource(destination, source, i, removeExifProperties)
}
guard CGImageDestinationFinalize(destination) else {return nil}
return mutableData
}
Затем я использую это для создания UIImage из NSMutableData
объектов, которые я получаю из предыдущей функции:
let image = UIImage(data: mutableData as Data)
и сохраняю изображение для пользователяБиблиотека выглядит так:
PHPhotoLibrary.shared().performChanges({
let request = PHAssetChangeRequest.creationRequestForAsset(from: image)
let placeholder = request.placeholderForCreatedAsset
let albumChangeRequest = PHAssetCollectionChangeRequest(for: collection)
if let placeholder = placeholder, let albumChangeRequest = albumChangeRequest {
albumChangeRequest.addAssets([placeholder] as NSArray)
}
return mutableData
}
Проблема, с которой я столкнулся, заключается в том, что при использовании этого метода выходной файл сжимается, а также имя и DPI полученного изображения отличаются от исходного изображения.Я хочу оставить все как оригинальное изображение и просто удалить метаданные.Есть ли способ сделать это?