门户网站建设情况自查汇报,山东德州网站建设,网站制作大概多少钱,南宁营销型网站建设公司哪家好判断图片是否缓存NSURL *url [NSURL URLWithString:[model.content objectForKey:image]];//请求网络地址数据的同步方法//因为这个方法在子线程(全局队列)中执行,所以不需要考虑死线程的问题SDWebImageManager *manager [SDWebImageManager sharedManager];[man…判断图片是否缓存NSURL *url [NSURL URLWithString:[model.content objectForKey:image]];//请求网络地址数据的同步方法//因为这个方法在子线程(全局队列)中执行,所以不需要考虑死线程的问题SDWebImageManager *manager [SDWebImageManager sharedManager];[manager diskImageExistsForURL:url];if ([manager diskImageExistsForURL:url]) {LOG(11111)self.speakImage [[manager imageCache] imageFromDiskCacheForKey:url.absoluteString];}else{LOG(3333333)NSData *data [NSData dataWithContentsOfURL:url];self.speakImage [UIImage imageWithData:data];} /** 获取网络图片的Size, 先通过文件头来获取图片大小 如果失败 会下载完整的图片Data 来计算大小 所以最好别放在主线程 如果你有使用SDWebImage就会先看下 SDWebImage有缓存过改图片没有 支持文件头大小的格式 png、gif、jpg http://www.cocoachina.com/bbs/read.php?tid165823 */ (CGSize)downloadImageSizeWithURL:(id)imageURL; //讨厌警告
-(id)diskImageDataBySearchingAllPathsForKey:(id)key{return nil;}
(CGSize)downloadImageSizeWithURL:(id)imageURL
{NSURL* URL nil;if([imageURL isKindOfClass:[NSURL class]]){URL imageURL;}if([imageURL isKindOfClass:[NSString class]]){URL [NSURL URLWithString:imageURL];}if(URL nil)return CGSizeZero;NSString* absoluteString URL.absoluteString;#ifdef dispatch_main_sync_safeif([[SDImageCache sharedImageCache] diskImageExistsWithKey:absoluteString]){UIImage* image [[SDImageCache sharedImageCache] imageFromMemoryCacheForKey:absoluteString];if(!image){NSData* data [[SDImageCache sharedImageCache] performSelector:selector(diskImageDataBySearchingAllPathsForKey:) withObject:URL.absoluteString];image [UIImage imageWithData:data];}if(!image){return image.size;}}
#endifNSMutableURLRequest *request [[NSMutableURLRequest alloc] initWithURL:URL];NSString* pathExtendsion [URL.pathExtension lowercaseString];CGSize size CGSizeZero;if([pathExtendsion isEqualToString:png]){size [self downloadPNGImageSizeWithRequest:request];}else if([pathExtendsion isEqual:gif]){size [self downloadGIFImageSizeWithRequest:request];}else{size [self downloadJPGImageSizeWithRequest:request];}if(CGSizeEqualToSize(CGSizeZero, size)){NSData* data [NSURLConnection sendSynchronousRequest:[NSURLRequest requestWithURL:URL] returningResponse:nil error:nil];UIImage* image [UIImage imageWithData:data];if(image){
#ifdef dispatch_main_sync_safe[[SDImageCache sharedImageCache] storeImage:image recalculateFromImage:YES imageData:data forKey:URL.absoluteString toDisk:YES];
#endifsize image.size;}}return size;
}
(CGSize)downloadPNGImageSizeWithRequest:(NSMutableURLRequest*)request
{[request setValue:bytes16-23 forHTTPHeaderField:Range];NSData* data [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];if(data.length 8){int w1 0, w2 0, w3 0, w4 0;[data getBytes:w1; range:NSMakeRange(0, 1)];[data getBytes:w2; range:NSMakeRange(1, 1)];[data getBytes:w3; range:NSMakeRange(2, 1)];[data getBytes:w4; range:NSMakeRange(3, 1)];int w (w1 24) (w2 16) (w3 8) w4;int h1 0, h2 0, h3 0, h4 0;[data getBytes:h1; range:NSMakeRange(4, 1)];[data getBytes:h2; range:NSMakeRange(5, 1)];[data getBytes:h3; range:NSMakeRange(6, 1)];[data getBytes:h4; range:NSMakeRange(7, 1)];int h (h1 24) (h2 16) (h3 8) h4;return CGSizeMake(w, h);}return CGSizeZero;
}
(CGSize)downloadGIFImageSizeWithRequest:(NSMutableURLRequest*)request
{[request setValue:bytes6-9 forHTTPHeaderField:Range];NSData* data [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];if(data.length 4){short w1 0, w2 0;[data getBytes:w1; range:NSMakeRange(0, 1)];[data getBytes:w2; range:NSMakeRange(1, 1)];short w w1 (w2 8);short h1 0, h2 0;[data getBytes:h1; range:NSMakeRange(2, 1)];[data getBytes:h2; range:NSMakeRange(3, 1)];short h h1 (h2 8);return CGSizeMake(w, h);}return CGSizeZero;
}
(CGSize)downloadJPGImageSizeWithRequest:(NSMutableURLRequest*)request
{[request setValue:bytes0-209 forHTTPHeaderField:Range];NSData* data [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];if ([data length] 0x58) {return CGSizeZero;}if ([data length] 210) {// 肯定只有一个DQT字段short w1 0, w2 0;[data getBytes:w1; range:NSMakeRange(0x60, 0x1)];[data getBytes:w2; range:NSMakeRange(0x61, 0x1)];short w (w1 8) w2;short h1 0, h2 0;[data getBytes:h1; range:NSMakeRange(0x5e, 0x1)];[data getBytes:h2; range:NSMakeRange(0x5f, 0x1)];short h (h1 8) h2;return CGSizeMake(w, h);} else {short word 0x0;[data getBytes:word; range:NSMakeRange(0x15, 0x1)];if (word 0xdb) {[data getBytes:word; range:NSMakeRange(0x5a, 0x1)];if (word 0xdb) {// 两个DQT字段short w1 0, w2 0;[data getBytes:w1; range:NSMakeRange(0xa5, 0x1)];[data getBytes:w2; range:NSMakeRange(0xa6, 0x1)];short w (w1 8) w2;short h1 0, h2 0;[data getBytes:h1; range:NSMakeRange(0xa3, 0x1)];[data getBytes:h2; range:NSMakeRange(0xa4, 0x1)];short h (h1 8) h2;return CGSizeMake(w, h);} else {// 一个DQT字段short w1 0, w2 0;[data getBytes:w1; range:NSMakeRange(0x60, 0x1)];[data getBytes:w2; range:NSMakeRange(0x61, 0x1)];short w (w1 8) w2;short h1 0, h2 0;[data getBytes:h1; range:NSMakeRange(0x5e, 0x1)];[data getBytes:h2; range:NSMakeRange(0x5f, 0x1)];short h (h1 8) h2;return CGSizeMake(w, h);}} else {return CGSizeZero;}}
} 转载于:https://www.cnblogs.com/Sucri/p/4718579.html