【问题标题】:ALAssetsLibrary is too slow while getting thumbnail image获取缩略图时 ALAssetsLibrary 太慢
【发布时间】:2013-02-27 12:35:05
【问题描述】:

使用 ALAssetsLibrary 加载缩略图需要时间。是否有任何解决方案可以更快地加载图像。 这些图像是照片中的 900 多张图像。 代码:

[ALAssetsGroupObj enumerateAssetsUsingBlock:^(ALAsset *asset, NSUInteger i, BOOL *load)
{         
  if(asset == nil) 
  {
     asset;
  }
  UIImage* thumbImage = [UIImage imageWithCGImage:[asset thumbnail]
}

谢谢

【问题讨论】:

  • 您能否为我们提供更多有关您打算做什么的背景信息:您真的需要预先加载 900 张图像吗?难道你不能让用户选择他想要的哪些图片(使用UIImagePickerController)?
  • 是的,我正在创建像 UIImagePickerController 这样的自定义 galleryView,并在 tableview 中加载缩略图。
  • 然后,正如@BlueVoodoo 所建议的那样:考虑在用户滚动时加载数据块。但是为什么你不能一开始就使用 UIImagePickerController 呢? (抱歉坚持:)
  • 我想选择一张图像然后立即关闭图像选择器。我们无法从 UIImagePickerController 获取缩略图图像
  • 如果图像尺寸很大(例如超过 2-3 MB),我们会在 NSData 中获取图像日期,准备该图像需要很长时间。如果我使用 ALAssetsLibrary,我可以立即获取缩略图关闭该控制器并准备图像背景。

标签: iphone objective-c


【解决方案1】:

不,没有办法让它更快。但是有一些技巧:

  1. 将它们缓存到静态 NSDictionary。下次您需要在应用程序中绘制它们时,它会比从库中拉出它们要快得多。我已经尝试了超过 900 个缩略图。
  2. 您的屏幕无法容纳 900 个拇指。当用户滚动时,您可以按块填充图像并每次加载 16-32 个左右。这有点棘手,因为绘制缩略图和滚动的操作都需要在主线程上运行。

【讨论】:

  • 是的,我正在创建像 UIImagePickerController 这样的自定义 galleryView,并在 tableview 中加载缩略图。
  • 我怀疑是这样。那么这些是你的选择。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-18
  • 1970-01-01
  • 1970-01-01
  • 2014-08-05
  • 2011-09-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多