需要在UITableViewCell中以缩略图的形式显示iPhone图库图像

时间:2014-04-09 15:01:00

标签: ios uitableview uiimagepickercontroller

在我的应用程序中,我允许用户从图库中选择一个或多个图像,当用户选择图像时,我将所有网址存储在一个数组中

- (void)elcImagePickerController:(ELCImagePickerController *)picker didFinishPickingMediaWithInfo:(NSArray *)info
{
    [self dismissViewControllerAnimated:YES completion:nil];

    for (NSDictionary *dict in info) {
    url = dict[@"UIImagePickerControllerReferenceURL"];
        [self.images addObject:url];
        NSLog(@"array value:%@",self.images);
        [self.myPDTable reloadData];
   }
}

我得到的输出是

array value:(
    "assets-library://asset/asset.JPG?id=74236046-12DA-4E75-9038-A3092D31005B&ext=JPG",
    "assets-library://asset/asset.JPG?id=98FC160A-60E1-4F29-80C8-1AED036F1140&ext=JPG",
    "assets-library://asset/asset.JPG?id=4D18448E-9796-47AE-A534-FB3E64518B89&ext=JPG",
    "assets-library://asset/asset.JPG?id=38099BA1-4988-46CB-ADE9-E1F3F896147A&ext=JPG",
    "assets-library://asset/asset.JPG?id=86556040-16C6-47BB-8CBA-F5164771EC9F&ext=JPG"
)

现在我的问题是我不知道如何使用这些值并在我的表格视图单元格中显示它们。

1 个答案:

答案 0 :(得分:1)

您在阵列的每个元素中获得的是资产URL。要从资产URL获取图像,请从ALAssetsLibrary对象开始,调用assetForURL:resultBlock:failureBlock:以获取相应的资源(照片文件),然后在resultBlock中拉出缩略图并使用它在你的界面。

以下是从ALAsset到可用图像的一些典型代码:

ALAsset* photo = // let's assume you've obtain an asset
CGImageRef im = photo.aspectRatioThumbnail;
UIImage* im = [UIImage imageWithCGImage:im scale:0
                            orientation:UIImageOrientationUp];

然而,你在这里做了一个非常奇怪的设计选择。 assetForURL:resultBlock:failureBlock:非常耗时且异步操作;它不适合调用表视图数据源方法(配置单元格时),这需要快速。在didFinishPickingMediaWithInfo:中,您为什么要问info UIImagePickerControllerReferenceURL?您不需要一组URL;你需要一系列的图像! info正在为您提供图像(UIImagePickerControllerOriginalImage);为什么不提供它?您可以抓住图像,将其调整大小,然后将尺寸缩小的图像粘贴到表格数据模型中,随时可以使用。

(另外,每次通过reloadData循环调用for都是愚蠢和浪费。在将所有图像收集到模型中之后,您应该只调用一次。)< / p>