将 NSString 中的文件名转换为 UIImage 以获取存储在资产库中的照片

Posted

技术标签:

【中文标题】将 NSString 中的文件名转换为 UIImage 以获取存储在资产库中的照片【英文标题】:Convert filename in NSString to UIImage for photo stored in asset library 【发布时间】:2012-04-02 20:28:22 【问题描述】:

我已经设法使用以下代码获取存储在资产库中的照片的原始文件名:

NSURL *url = [[NSURL alloc] initWithString:project.photo];
        ALAssetsLibrary* library = [[ALAssetsLibrary alloc] init];

        [library assetForURL:url resultBlock:^(ALAsset *asset) 

            ALAssetRepresentation *rep = [asset defaultRepresentation];

            _filename = [rep filename];
            NSLog(@"filename for image is: %@", _filename);

            if (_filename != nil)
            

                UIImage *image = [UIImage imageWithContentsOfFile:_filename];
                NSLog(@"image is! %f", image.size.height);

                [image drawInRect:CGRectMake( (pageSize.width - image.size.width/2)/2, 350, image.size.width/2, image.size.height/2)];

            

NSString 变量_filepath 将图像的原始文件路径存储为:

IMG_0294.JPG

我要做的就是从照片库中获取这张图片,然后使用以下代码将其绘制到 pdf 文档中:

        [image drawInRect:CGRectMake( (pageSize.width - image.size.width/2)/2, 350, image.size.width/2, image.size.height/2)];

这个绘制代码肯定是有效的,因为我已经使用存储在应用程序目录中的图像进行了尝试。我只需要找到一种使用文件路径来创建 UIImage 或将其指向该照片的完整目录的方法。

图像变量在输出到控制台时返回 null。

任何帮助都会很棒。

【问题讨论】:

【参考方案1】:

我建议你抓住照片的url 而不仅仅是filename

imageURL = [rep url];

您可以将此imageURLALAssetsLibrary 方法assetForURL:resultBlock:failureBlock: 一起使用来创建UIImage。

有很多示例代码展示了如何使用assetForURL 方法。

希望这会有所帮助。

【讨论】:

【参考方案2】:

您无法通过路径或 url 从资产库中获取图像。在您的情况下,您需要使用 UIImage *image = [UIImage imageWithCGImage:rep.fullResolutionImage];

或 fullScreenImage 或其他...

【讨论】:

以上是关于将 NSString 中的文件名转换为 UIImage 以获取存储在资产库中的照片的主要内容,如果未能解决你的问题,请参考以下文章

将核心数据中的 NSNumber 转换为 NSString

将 NSURL 转换为 NSString

将NSURL转换为NSString

将 NSData 转换为 NSString 后如何将 NSString 转换回 NSData?

将文件路径从 NSString 转换为 NSURL

如何将二进制数据转换为 NSstring?