将下载的图像转换为内存中的静态图像-IOS

Posted

技术标签:

【中文标题】将下载的图像转换为内存中的静态图像-IOS【英文标题】:Convert a downloaded image to in-memory static image -IOS 【发布时间】:2017-01-11 06:28:02 【问题描述】:

我的场景是这样的。在应用程序开始时,将从服务器下载图像列表,下载后所有图像都将转换为静态图像,然后将在应用程序中的任何地方使用这些静态图像。我认为在android中这个东西可以使用BITMAP来实现。 (未确认)。

目前我正在使用SDWEBIMAGE 库来下载和缓存图像。但我不想再使用这个库了。我只想一次下载所有图像,然后在任何我想添加下面的代码 sn-p 以显示下载的图像。

[ImageView setImage:[UIImage imageNamed:@"DownloadedImageName"]];

有没有办法在 ios 中完成这件事?

【问题讨论】:

【参考方案1】:

您必须下载每个图像并将其保存到“文档”目录中,然后在需要时使用它。

要将图像保存到文档目录,请使用如下代码:

- (IBAction)saveImage:(UIImage*)img 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:@"savedImage.png"];
    NSData *imageData = UIImagePNGRepresentation(img);
    [imageData writeToFile:savedImagePath atomically:NO];   

要在 imageview 上获取和显示图像,请使用以下代码:

- (UIImage*)getImage 

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,     NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *getImagePath = [documentsDirectory stringByAppendingPathComponent:@"savedImage.png"];
    UIImage *img = [UIImage imageWithContentsOfFile:getImagePath];
    return img;

【讨论】:

【参考方案2】:

[UIImage imageNamed:] 方法仅用于获取您的应用程序包中已存在的图像。因此,如果您有从 Internet 下载的动态内容,则不能使用此方法。相反,创建您自己的方法来从沙箱 Documents 文件夹加载图像。

【讨论】:

以上是关于将下载的图像转换为内存中的静态图像-IOS的主要内容,如果未能解决你的问题,请参考以下文章

Webview中的iOS静态图像加载

使用静态库中的图像

使用飞碟将图像渲染为内存中的 PDF

从 ios 中的 URL 获取图像不起作用

iOS:如何将 UIView 的自绘内容转换为图像(普遍的通用解决方案返回空白图像)?

将 Gmail 转换为 PDF:HTML 中的嵌入图像