我正在尝试使用 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 仍然使用当前时间戳而不是我尝试设置的时间戳保存在相册的末尾。
最佳答案
照片应用程序似乎不会根据图像元数据中的日期进行排序(很可能是因为元数据可以存储在 iCloud 上,但可能在本地不可用)。相反,它似乎按 creationDate
排序,这是在 PHAsset
上定义的属性。您可以使用照片框架更改它。像这样的事情应该可以解决问题:
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
}
})
但是请注意,相机胶卷或所有照片相册的排序方式与年份、收藏和时刻 View 不同。由于某种原因,相机胶卷/所有照片不会按 creationDate
进行排序,而年份、收藏和时刻会按creationDate
排序。它也不使用照片元数据,因此我不确定它正在检查什么来对该相册的照片进行排序。
关于ios - 将图像与日期时间元数据保存到相册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33058046/