1、直接获取
NSData *data = [NSData dataWithContentsOfURL:[NSURLURLWithString:@”http://s12.mogujie.cn/b7/bao/131011/1jix9_kqywmrcdkfbg26dwgfjeg5sckzsew_400x540.jpg_200x999.jpg”]];
UIImage *image = [UIImage imageWithData:data];
NSLog(@”w = %f,h = %f”,image.size.width,image.size.height);
2、//需要用到第三方库SDWebImage
UIImageView *v1 = [[UIImageViewalloc]init];
[self.viewaddSubview:v1];
[v1 sd_setImageWithURL:[NSURLURLWithString:imageName placeholderImage:[UIImageimageNamed:@”default1″]options:SDWebImageRetryFailedcompleted:^(UIImage *image,NSError *error,SDImageCacheType cacheType,NSURL *imageUrl){
CGSize size = image.size;
CGFloat w = size.width;
CGFloat H = size.height;
}];
#import "ViewController.h" #import "UIImageView+WebCache.h" //由于网络问题这里使用的是本地服务器 static NSString * urlString = @"http://localhost/nvshen.jpeg"; @interface ViewController () @property (weak, nonatomic) IBOutlet UIImageView *imageVIew; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; } - (IBAction)downLoad:(id)sender { /* options所有选项: //失败后重试 (经常使用) SDWebImageRetryFailed = 1 << 0, //UI交互期间开始下载,导致延迟下载比如UIScrollView减速。(经常使用) SDWebImageLowPriority = 1 << 1, //只进行内存缓存 SDWebImageCacheMemoryOnly = 1 << 2, //这个标志可以渐进式下载,显示的图像是逐步在下载 SDWebImageProgressiveDownload = 1 << 3, //刷新缓存 SDWebImageRefreshCached = 1 << 4, //后台下载 SDWebImageContinueInBackground = 1 << 5, //优先下载 SDWebImageHighPriority = 1 << 8, //延迟占位符 SDWebImageDelayPlaceholder = 1 << 9, //改变动画形象 SDWebImageTransformAnimatedImage = 1 << 10, */ /* 只是获取图片 1)self.imageVIew sd_setImageWithURL:[NSURL URLWithString:urlString] 获取图片 完成后可操作 2)[self.imageVIew sd_setImageWithURL:[NSURL URLWithString:urlString] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) { }]; 获取动画(图片组) 3)self.imageVIew sd_setAnimationImagesWithURLs:<#(NSArray *)#> 从之前缓存里获取 4)self.imageVIew sd_setImageWithPreviousCachedImageWithURL:<#(NSURL *)#> placeholderImage:<#(UIImage *)#> options:<#(SDWebImageOptions)#> progress:<#^(NSInteger receivedSize, NSInteger expectedSize)progressBlock#> completed:<#^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL)completedBlock#> */ //较完整的操作 /* URl:这里是网络地址 placeholderImage:占为图片,在下载完成前显示 options:操作选项 completed:完成后-> */ [self.imageVIew sd_setImageWithPreviousCachedImageWithURL:[NSURL URLWithString:urlString] placeholderImage:nil options:SDWebImageRetryFailed progress:^(NSInteger receivedSize, NSInteger expectedSize) { //这里是下载进度 //receivedSize 已经下载的大小 //expectedSize 总大小 } completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) { //下载完成后 //可以是成功,也可以是失败。 }]; } @end
SDWebImageRetryFailed = 1 << 0,:
默认情况下,如果一个url在下载的时候失败了,那么这个url会被加入黑名单并且library不会尝试再次下载,这个flag会阻止library把失败的url加入黑名单(简单来说如果选择了这个flag,那么即使某个url下载失败了,sdwebimage还是会尝试再次下载他
SDWebImageLowPriority = 1 << 1,:
默认情况下,图片会在交互发生的时候下载(例如你滑动tableview的时候),这个flag会禁止这个特性,导致的结果就是在scrollview减速的时候
,才会开始下载(也就是你滑动的时候scrollview不下载,你手从屏幕上移走,scrollview开始减速的时候才会开始下载图片
SDWebImageCacheMemoryOnly = 1 << 2,:
这个flag禁止磁盘缓存,只有内存缓存
SDWebImageProgressiveDownload = 1 << 3,:
这个flag会在图片下载的时候就显示(就像你用浏览器浏览网页的时候那种图片下载,一截一截的显示(待确认))
SDWebImageRefreshCached = 1 << 4,:
一个图片缓存了,还是会重新请求.并且缓存侧略依据NSURLCache而不是SDWebImage.URL不变,图片会更新时使用
SDWebImageContinueInBackground = 1 << 5,:
启动后台下载,加入你进入一个页面,有一张图片正在下载这时候你让app进入后台,图片还是会继续下载(这个估计要开backgroundfetch才有用)
SDWebImageHandleCookies = 1 << 6,:
可以控制存在NSHTTPCookieStore的cookies.
SDWebImageAllowInvalidSSLCertificates = 1 << 7,:
允许不安全的SSL证书,在正式环境中慎用
SDWebImageHighPriority = 1 << 8,:
默认情况下,image在装载的时候是按照他们在队列中的顺序装载的(就是先进先出).这个flag会把他们移动到队列的前端,并且立刻装载
,而不是等到当前队列装载的时候再装载.
SDWebImageDelayPlaceholder = 1 << 9,:
默认情况下,占位图会在图片下载的时候显示.这个flag开启会延迟占位图显示的时间,等到图片下载完成之后才会显示占位图.
SDWebImageTransformAnimatedImage = 1 << 10,:
是否transform图片