【发布时间】:2015-08-24 19:40:58
【问题描述】:
我正在与ALAssetLibrary 合作,从我的相机胶卷中获取图像,以获得我正在制作的自定义视图。这样做非常简单:
library.enumerateGroupsWithTypes(ALAssetsGroupType(ALAssetsGroupSavedPhotos), usingBlock: {
(group: ALAssetsGroup?, stop: UnsafeMutablePointer<ObjCBool>) in
if group != nil {
group!.setAssetsFilter(ALAssetsFilter.allPhotos())
var indexSet = NSIndexSet(indexesInRange: NSMakeRange(0, group!.numberOfAssets() - 1))
group!.enumerateAssetsAtIndexes(indexSet, options: nil, usingBlock: {
(result: ALAsset!, index: Int, stop: UnsafeMutablePointer<ObjCBool>) in
if (result != nil) {
var alAssetRapresentation: ALAssetRepresentation = result.defaultRepresentation()
var url = alAssetRapresentation.url()
var iRef = alAssetRapresentation.fullResolutionImage().takeUnretainedValue()
var image = UIImage(CGImage: iRef)
}
})
}
}) { (NSError) -> Void in
}
所有这些都在模拟器中运行良好。然而,在设备上,获取fullResolutionImage() 被证明是设备上的内存密集型方式并导致崩溃。我认为这很有意义,数十张高分辨率图像全部加载到内存中是一个糟糕的主意,所以我想缩小质量并只显示图像的缩略图。唯一的问题是我没有找到从AlAssetRepresentation 获取缩略图的简单方法。
我正在尝试使用 CGImageSourceCreateThumbnailAtIndex 创建缩略图,但对如何执行此操作感到非常困惑。
非常感谢任何帮助!
【问题讨论】:
标签: ios swift alassetslibrary