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

时间:2017-01-11 06:28:02

标签: ios objective-c image uiimageview

我的情景就是这样。在应用程序开始时,将从服务器和服务器下载图像列表。一旦下载,所有图像将被转换为静态图像,并且将在应用程序中随处使用那些静态图像。我认为在android中这个东西可以用BITMAP来实现。 (不确认)。

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

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

有什么方法可以在ios中完成这项工作吗?

2 个答案:

答案 0 :(得分:1)

您必须下载每张图片并将其保存到" Documents"目录,然后在需要时使用它。

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

- (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;
}

答案 1 :(得分:0)

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