Получение изображений с дрона DJI с данными EXIF

Я использую DJISDK в iOS для загрузки изображений с самолета.

Я использую метод downloadSelectedFiles из класса PlaybackManager.

Вот мой обратный вызов процесса:

process: { (data, error) in
    if data != nil{
        if self.downloadedImageData != nil{
            self.downloadedImageData!.append(data!)
        }else{
            self.downloadedImageData = data!
        }

    }
}

И это обратный вызов завершения файла:

fileCompletion: {
    self.downloadedFilesCount += 1
    let image = UIImage(data: self.downloadedImageData!)
    if let img = image {
        self.downloadedImagesArray?.append(img)
    }
    self.downloadedImageData = nil         
}

Я правильно получаю изображение, но без данных EXIF. Как я могу получить эту информацию и добавить ее к изображению? Я уже загрузил и попробовал iOS-MediaManagerDemo, и это то же самое, загружает изображение, но без данных exif, но официальное приложение DJI Go получает всю информацию, поэтому должен быть какой-то способ сделать это.


person Alvaro Menoni    schedule 24.08.2017    source источник
comment
У меня нет опыта работы с dji-sdk, но в качестве общего совета: я бы не стал делать ставку на то, что что-то выполнимо с использованием определенного API, только потому, что компания, разрабатывающая это, может это сделать. Многие компании также используют частные API, к которым у других разработчиков нет доступа. Это может быть как раз и здесь. Но я надеюсь, что я ошибаюсь, и вы найдете решение.   -  person Dávid Pásztor    schedule 25.08.2017
comment
Вот тема, описывающая точно такую ​​же проблему (хотя и с ужасно отформатированным кодом): forum.dev.dji.com/forum.php?mod=viewthread&tid=32953   -  person nathan    schedule 25.08.2017
comment
Я откопал новый вопрос от пользователя на их официальных форумах, который вместо этого использует downloadSelectedFiles   -  person nathan    schedule 25.08.2017


Ответы (1)


На их форумах также есть похожая проблема, связанная с пустыми метаданными и downloadSelectedFilesWithPreparation. Пользователь, создавший сообщение, также нашел решение:

Я решил проблему, не преобразовывая NSData в какой-либо формат, вместо этого сохраняя NSData напрямую. Использование PHAssets и временного файла для хранения NSData в качестве PHAssets принимает данные только из URL-адреса.


Попробуйте использовать fetchFileDataWithOffset:updateQueue:updateBlock (в Swift он будет называться fetchFileData(with:updateQueue:updateBlock))

[...] выборка медиаданных вернет все данные для видео или изображения


Пример кода (objc): здесь

person nathan    schedule 24.08.2017
comment
Сохранение объекта данных напрямую решило проблему! Спасибо!! - person Alvaro Menoni; 29.08.2017
comment
Второе решение сработало? Так что я могу обновить свой ответ - person nathan; 29.08.2017
comment
В яблочко! Я даже не пробовал первый вариант, Сохранение объекта данных было самым простым способом, поэтому я сначала попробовал, и это сработало. - person Alvaro Menoni; 29.08.2017