iOS如何显示具有资产库路径的图像而不将它们绑定到实例变量

Posted

技术标签:

【中文标题】iOS如何显示具有资产库路径的图像而不将它们绑定到实例变量【英文标题】:iOS how to show images with asset library path without binding them to instance variables 【发布时间】:2014-11-28 14:01:40 【问题描述】:

我可以使用资产库路径获取图像并通过 AssetLibrary 将其显示在视图中,但图像被分配给控制器的实例变量。现在,我想在视图中显示多个图像,因此我不应该将这些图像绑定到实例变量,因为我不知道将包含多少个图像。有任何想法吗?基本上我在这里要做的是我希望用户能够从照片库中选择图像并显示所有图像。

【问题讨论】:

【参考方案1】:

下面的代码可能会对你有所帮助。

-(void) putDataFromAssertUrl:(NSURL*)url ToImageView:(UIImageView*) iv // url is an assert url, can't be directly used.

    ALAssetsLibrary *assetLibrary=[[ALAssetsLibrary alloc] init];
    [assetLibrary assetForURL:url resultBlock:^(ALAsset *asset) 
        ALAssetRepresentation *rep = [asset defaultRepresentation];
        Byte *buffer = (Byte*)malloc(rep.size);
        NSUInteger buffered = [rep getBytes:buffer fromOffset:0.0 length:rep.size error:nil];
        NSData *data = [NSData dataWithBytesNoCopy:buffer length:buffered freeWhenDone:YES];//this is NSData may be what you want
        NSLog(@"length : %lu", (unsigned long)data.length);
        iv.image = [UIImage imageWithData:data];
        [iv setNeedsDisplay];
     failureBlock:^(NSError *err) 
        NSLog(@"Error: %@",[err localizedDescription]);
    ];

【讨论】:

以上是关于iOS如何显示具有资产库路径的图像而不将它们绑定到实例变量的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET - 如何在浏览器中显示图像而不将图像保存在临时文件中?

ios核心数据:如何更改NSManagedObject而不将其保存到上下文中

在跨度中显示图像而不将其转换为块级元素

如何使用 Java 裁剪图像而不将其加载到内存中

将图像插入项目中,而不将它们放在 Resource 文件夹中。(AppleScript 应用程序)

将 python 对象上传到 Google Cloud Storage 而不将其保存到文件