【IOS工具类】下载图片到本地(非相册)

本文介绍了一个用于图片缓存和加载的Objective-C实用工具类。该类通过NSURLConnection从指定URL下载图片,并将其缓存在应用程序的缓存目录中。如果图片已缓存,则直接从缓存加载,否则进行网络下载。

UIImageBankUtil.h:

#import <UIKit/UIKit.h>

@interface UIImageBankUtil : NSObject 

-(void)getBankImage:(NSString *)downurl bankView:(UIImageView *)biv;

@end

UIImageBankUtil.m

#import "UIImageBankUtil.h"

@implementation UIImageBankUtil{
    NSMutableData *imageData;
    NSString *imageName;
    NSURLConnection *downCon;
    UIImageView *bankImageView;
}

-(void)getBankImage:(NSString *)downurl bankView:(UIImageView *)biv{
    NSLog(@"downurl=%@",downurl);
    imageData = [[NSMutableData alloc]init];
    NSArray *subStr = [downurl componentsSeparatedByString:@"/"];
    imageName = [[[subStr lastObject] componentsSeparatedByString:@"."] objectAtIndex:0];
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
    NSString *path = [[[paths objectAtIndex:0] stringByAppendingPathComponent:@"dataCaches"] stringByAppendingPathComponent:imageName];
    NSFileManager *fileManager = [NSFileManager defaultManager];
    if ([fileManager fileExistsAtPath:path]) {
        NSData *image = [NSData dataWithContentsOfFile:path];
        biv.image = [UIImage imageWithData:image];
        return;
    }else {
        downCon = [[NSURLConnection alloc] initWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:downurl]] delegate:self];
        [downCon start];
    }
    bankImageView = biv;
}


-(BOOL)saveImage:(NSData*)image toFile:(NSString*)fileName
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
    NSString *path = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"dataCaches"];
    NSFileManager *fileManager = [NSFileManager defaultManager];
    if (![fileManager fileExistsAtPath:path]){
        if (![fileManager createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:nil]) {
            return NO;
        }
    }
    return [fileManager createFileAtPath:[path stringByAppendingPathComponent:fileName]
                                contents:image
                              attributes:nil];
}
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
    [imageData setLength:0];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
    if (connection == downCon) {
        [imageData appendData:data];
    }
}
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
    
}
-(void)connectionDidFinishLoading:(NSURLConnection *)connection{
    if ([UIImage imageWithData:imageData]!=NULL) {
        [self saveImage:imageData toFile:imageName];
        bankImageView.image = [UIImage imageWithData:imageData];
    }
}

使用方式:传入url和需要设置的ImageView

if(bankImageView != nil){
        UIImageBankUtil *util = [[UIImageBankUtil alloc]init];
        [util getBankImage:[NSString stringWithFormat:bank_logo_image_url,[InfoCtxUtil getCtx],shortPng] bankView:bankImageView];
    }








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值