使用日期时间元数据将图像保存到相册
Save image to photo album with datetime metadata
我正在尝试使用 writeImageDataToSavedPhotosAlbum
中的元数据 属性 将 GIF 保存到 iPhone 的相册并添加 date/time 元数据,以便保存的 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
}
})
但是请注意,相机胶卷或所有照片相册的排序方式与年份、Collections 和时刻视图的排序方式不同。出于某种原因,Camera Roll/All 照片不会按 creationDate
排序,而 Years、Collections 和 Moments 会。它也不使用照片元数据,所以我不确定它正在检查什么来对相册的照片进行排序。
我正在尝试使用 writeImageDataToSavedPhotosAlbum
中的元数据 属性 将 GIF 保存到 iPhone 的相册并添加 date/time 元数据,以便保存的 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
}
})
但是请注意,相机胶卷或所有照片相册的排序方式与年份、Collections 和时刻视图的排序方式不同。出于某种原因,Camera Roll/All 照片不会按 creationDate
排序,而 Years、Collections 和 Moments 会。它也不使用照片元数据,所以我不确定它正在检查什么来对相册的照片进行排序。