Как получить оригинальную (EXIF?) Дату и время создания PHAsset?

74
8

PHAsset имеет creationDate свойство, которое дает дату создания актива в формате UTC.

Если я сделаю снимок, сделанный в 22:52 UTC-6, свойство creationDate будет 03:52 AM.

Как я должен знать "истинное" время снятой фотографии? Информация о часовом поясе не снабжается свойством creationDate, поэтому я не могу настроить ее до 10:52 вечера - я понятия не имею, какой часовой пояс только при настройке...

Я знаю, что могу получить дату создания EXIF (или попытаться хотя бы) с помощью PHImageManager requestImageDataForAsset и использовать данные, возвращенные туда, чтобы получить дату создания EXIF, которая на самом деле составляет 10:52 вечера, но это приводит к очень медленному результату, когда фотографии находятся в iCloud (мне нужно это значение даты создания для всех активов в пользовательской библиотеке). Кроме того, я не могу понять, как получить дату создания EXIF для видео.

Я также знаю, что есть способы получения часового пояса от CLLocation, который я мог бы использовать для регулировки creationDate - но эти методы либо скорость ограничены и/или неточные

Есть ли другой, более простой способ получить это первоначальное значение даты создания?

Напомним:

    Фотография сделана в 10:52 в UTC-6 Дата создания PHAsset - 03:52 в UTC Я хочу знать, как получить 10:52 PM UTC-6 дата/время.

спросил(а) 2017-06-19T18:55:00+03:00 3 года, 8 месяцев назад
1
Решение
96

Вы можете попробовать использовать PHContentEditingInput. Вероятно, это будет медленным для изображений iCloud, но стоит попробовать, поскольку я не думаю, что есть другие способы сделать это :(

Этот подход не требует импорта ImageIO и требует меньше кода, поэтому, возможно, он будет несколько лучше, чем PHImageManager requestImageDataForAsset

Вы можете использовать эту категорию PHAsset чтобы быстро ее PHAsset: https://github.com/zakkhoyt/PHAsset-Utility

ответил(а) 2017-06-22T10:48:00+03:00 3 года, 8 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема