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图片