Ошибка ввода-вывода изображения: «addImageFromSource: 2179: изображение 0 источника равно нулю» - PullRequest
0 голосов
/ 05 июля 2019

Я пытаюсь удалить метаданные из изображений DNG с помощью следующей функции:

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

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

    let imageProperties = CGImageSourceCopyPropertiesAtIndex(source, 0, nil) as Dictionary?

    let dngDict = imageProperties?[kCGImagePropertyDNGDictionary]
    var newDNGDict:NSMutableDictionary?

    if let dict = dngDict {
        newDNGDict = editDNGDict(originalDict: dict as! NSMutableDictionary)
    }

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

    if let dngDictionary = newDNGDict {
        properties[String(kCGImagePropertyDNGDictionary)] = dngDictionary
    }


    print("SOURCE: \(source)")

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

    guard CGImageDestinationFinalize(destination) else {return nil}

    return mutableData
}

оператор print печатает значение source, поэтому источник не равен nil.Однако, когда выполняются следующие строки, я получаю следующие ошибки:

addImageFromSource: 2179: изображение 0 источника равно nil

finalize: 2470: у назначения изображения должен быть хотя бы одинimage

Я делаю тот же процесс для других форматов (JPG, PNG, TIFF и т. д.), и ни у одного из них такой проблемы нет.Буду признателен, если кто-нибудь сможет мне помочь.

...