IOS中获取图片大小的操作
来源:爱站网时间:2021-03-09编辑:网友分享
页面加载图片通常是使用uiimageview或uibutton才能上线,而我们要根据图片的大小进行操作,今天爱站技术频道小编给大家分享IOS中获取图片大小的操作。
页面加载图片通常是使用uiimageview或uibutton才能上线,而我们要根据图片的大小进行操作,今天爱站技术频道小编给大家分享IOS中获取图片大小的操作。
IOS 获取网络图片大小实例详解
但是对于网络图片来说,要想通过最优的方法获得尺寸就略微有点困难,大体思路就是下面这种:
如果有使用SDWebImage,则首先检查是否缓存过该图片,如果没有,先通过文件头获取图片大小(针对格式为png、gif、jpg文件获取其尺寸大小),如果获取失败,则下载完整的图片data,然后计算大小,如果有使用SDWebImage,则使用SDWebImage缓存该图片。
实例代码:
+(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; #ifdef dispatch_main_sync_safe if([[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; } } #endif NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:URL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:1]; NSString* pathExtendsion = [URL.pathExtension lowercaseString]; CGSize size = CGSizeZero; if ([pathExtendsion rangeOfString:@"png"].location != NSNotFound) { size = [self downloadPNGImageSizeWithRequest:request]; } else if([pathExtendsion rangeOfString:@"gif"].location != NSNotFound) { size = [self downloadGIFImageSizeWithRequest:request]; } else{ size = [self downloadJPGImageSizeWithRequest:request]; } if(CGSizeEqualToSize(CGSizeZero, size)) { NSData* data = [NSData dataWithContentsOfURL:URL]; UIImage* image = [UIImage imageWithData:data]; if(image) { //如果未使用SDWebImage,则忽略;缓存该图片 #ifdef dispatch_main_sync_safe [[SDImageCache sharedImageCache] storeImage:image recalculateFromImage:YES imageData:data forKey:URL.absoluteString toDisk:YES]; #endif size = image.size; } } //过滤掉不符合大小的图片,大图太大浪费流量,用户体验不好 if (size.height > 2048 || size.height 2048 || size.width
以上就是爱站技术频道小编介绍的IOS中获取图片大小的操作,想要获得更多的开发技巧,可以直接来到js.aizhan.com学习。