ios通过URL获取网络图片的原始大小

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;

扫描二维码关注公众号,回复: 4036137 查看本文章

}];
 

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

猜你喜欢

转载自blog.csdn.net/a18339063397/article/details/83824217