美文网首页
iOS图片下载

iOS图片下载

作者: 弗利撒 | 来源:发表于2017-11-23 09:29 被阅读0次

天才是百分之一的灵感加百分之九十九的汗水。——爱迪生

今天分享下我在实际应用中加载图片的处理

#pragma mark - 获取图片方法

+ (void) sd_webViewWithData:(NSString * ) urlString placeholderImage:(NSString *) placeholder WiBlock:(GJYWebImage)block{

UIImage *img;

if ([urlString isEqualToString:@""]) {//在工作中经常会发现图片地址为空

img = [UIImage imageNamed:placeholder];

block(img);

return;

}

SDWebImageManager *manager = [SDWebImageManager sharedManager];

if ([manager diskImageExistsForURL:[NSURL URLWithString:urlString]]) {

img = [[manager imageCache] imageFromDiskCacheForKey:[NSURL URLWithString:urlString].absoluteString];

block(img);

} else {

[[SDWebImageManager sharedManager] downloadImageWithURL:[NSURL URLWithString:urlString] options:0 progress:^(NSInteger receivedSize, NSInteger expectedSize) {//这个方法下载图片,在子线程下,返回给主线程一个图片

} completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {

if (image == nil) {

UIImage * imagePlace = [UIImage imageNamed:placeholder];

block(imagePlace);

} else {

block(image);

} }];

} }

上面是没有对图片进行处理的下载方法,在大多数情况下,还需要对图片进行处理,获取固定尺寸的图片,下面的例子是针对固定尺寸进行图片下载的处理:

#pragma mark - 获取指定尺寸的图片

+ (void) sd_imageScaleWithURL:(NSString *) urlStr placeholderImage:(NSString *) placeholder withSize:(CGSize) size WiBlock:(GJYWebImage)block{

UIImage *img;

if ([urlStr isEqualToString:@""]) {

img = [UIImage imageNamed:placeholder];

block(img);

return;

}

SDWebImageManager *manager = [SDWebImageManager sharedManager];

if ([manager diskImageExistsForURL:[NSURL URLWithString:urlStr]]) {

img = [[manager imageCache] imageFromDiskCacheForKey:[NSURL URLWithString:urlStr].absoluteString];

block(img);

} else {

[manager downloadImageWithURL:[NSURL URLWithString:urlStr] options:0 progress:^(NSInteger receivedSize, NSInteger expectedSize) {

} completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {

if (image == nil) {

UIImage * imagePlace = [UIImage imageNamed:placeholder];

block(imagePlace);

} else {

UIImage * newImg = [image scaleImageWithSize:size];//对图片进行指定尺寸的处理,主要是对大图进行缩放,小图放大的处理

SDImageCache * chace = [SDImageCache new];

[chace storeImage:newImg recalculateFromImage:YES imageData:nil forKey:urlStr toDisk:YES];//存储图片

block(newImg);

} }];

} }

下面是图片处理(建立了一个category):

/** 缩放图片到指定Size */

- (UIImage *)scaleImageWithSize:(CGSize)size{

if (CGSizeEqualToSize(size, self.size)) {

return self;

}

//创建上下文

UIGraphicsBeginImageContextWithOptions(size, NO, [UIScreen mainScreen].scale);

//绘图

[self drawInRect:CGRectMake(0, 0, size.width, size.height)];

//获取新图片 UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();// 注意一定要关闭,要不会内存泄漏,

return newImage;

}

上面是我对图片的处理,图片的处理一般很麻烦,针对不同情况进行不同处理,具体问题具体分析。

文笔不好,见谅!

有不对的地方欢迎来指导!

相关文章

  • iOS图片下载

    天才是百分之一的灵感加百分之九十九的汗水。——爱迪生 今天分享下我在实际应用中加载图片的处理 #pragma ma...

  • 图片下载(iOS)

    图片下载重复下载问题定义字典保存下载好的图片磁盘缓存问题内存没有尝试从磁盘获取阻塞主线程问题新建NSOperati...

  • iOS多线程之NSThread

    相关文章:iOS多线程之GCDiOS多线程之NSOperations 案例1--图片下载 案例2--多售票窗口同时...

  • SDWebImage

    SDWebImage介绍 iOS中著名的网络图片处理框架. 包含的功能:图片下载,图片缓存,下载进度监听,GIF处...

  • iOS - 关于图片下载

    一、有关图片下载的逻辑 图片下载重复下载问题定义字典保存下载好的图片磁盘缓存问题内存没有尝试从磁盘获取阻塞主线程问...

  • iOS多图片下载

    iOS多图片下载、在cell里面下载图片、做了缓存优化。 (app.icon是图片地址) // 先从内存缓存中取出...

  • iOS图片下载器

    对比了一下SDWebImage,YYImage,AFN等图片下载管理。首先看一看SDWebImage-SDWebI...

  • 美图猎手,AI智能帮你下载网页图片,Ins图片下载,视频下载

    美图猎手,一个带AI智能的网页图片下载助手 (目前仅支持iOS,在AppStore输入“美图猎手”即可找到) 1....

  • SDWebImage面试可能问到的细节?

    『导言』 iOS开发中经常用到下载图片的第三方SDWebImage框架,进行有效的图片下载和缓存。那么对SDWeb...

  • iOS开发中在swift项目中使用Kingfisher下载图片

    在iOS开发中不可避免地会用到图片下载功能,在OC中有SDWebImage这个经典三方库,而在swift中同样有一...

网友评论

      本文标题:iOS图片下载

      本文链接:https://www.haomeiwen.com/subject/wibavxtx.html