Сохранить изображение в фотоальбом с метаданными даты и времени
Я пытаюсь использовать свойство метаданных в writeImageDataToSavedPhotosAlbum
сохранить GIF в фотоальбоме iPhone и добавить метаданные даты / времени, чтобы сохраненный GIF появлялся в другом месте в фотоальбоме пользователя, а не в месте по умолчанию в конце фотоальбома.
Я пытался сделать следующее:
let metadata: [String: AnyObject]! = [kCGImagePropertyTIFFDictionary as String:
[kCGImagePropertyTIFFDateTime as String: dateTime!],
kCGImagePropertyExifDictionary as String:
[kCGImagePropertyExifDateTimeDigitized as String: dateTime!,
kCGImagePropertyExifDateTimeOriginal as String: dateTime!]]
library.writeImageDataToSavedPhotosAlbum(data, metadata: metadata, completionBlock: completionBlock)
и отладочная печать для переменной метаданных показывает:
["{TIFF}": {
DateTime = "2015:10:09 20:07:48";
}, "{Exif}": {
DateTimeDigitized = "2015:10:09 20:07:48";
DateTimeOriginal = "2015:10:09 20:07:48";
}]
Однако это не похоже на настройку сработавших метаданных, потому что GIF все еще сохраняется в конце фотоальбома с текущей меткой времени вместо метки времени, которую я пытаюсь установить.
1 ответ
Похоже, что приложение "Фотографии" не выполняет сортировку по дате в метаданных изображения (скорее всего, поскольку эти метаданные могут храниться в iCloud, они потенциально недоступны локально). Вместо этого, кажется, сортировать по creationDate
, который является свойством, определенным на PHAsset
, Вы можете изменить это с помощью фреймворка Photos. Нечто подобное должно сработать:
PHPhotoLibrary.sharedPhotoLibrary().performChanges({ () -> Void in
let request = PHAssetChangeRequest(forAsset: asset)
request.creationDate = dateTime!
}, completionHandler: { (success: Bool, error: NSError?) -> Void in
dispatch_async(dispatch_get_main_queue()) {
//done
}
})
Однако обратите внимание, что альбом "Фотопленка" или "Все фотографии" сортирует их не так, как в представлении "Годы", "Коллекции" и "Моменты". По какой-то причине Camera Roll/All Photos не сортируется на creationDate
в то время как годы, коллекции и моменты. Он также не использует метаданные фотографий, поэтому я не уверен, что именно он рассматривает для сортировки фотографий для этого альбома.