iOS下载网络图片并存储到沙盒目录下
2017-05-04 11:29
393 查看
//调用下面的方法model为一个实体类,可以传递一个网址
model.urlId
为每一个网址图片的唯一标示,避免重复,如果重复会将原来图片覆盖
model.urlStr = @"http://img1.126.net/channel6/2016/022471/0805/2.jpg?dpi=6401136"
-(void)getData:(ADModel*)model{
NSString * documentsDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask,
YES) objectAtIndex:0];
DownloadImage([NSURL
URLWithString:model.urlStr],
^(UIImage *image) {
[self
saveImage:image withFileName:model.urlId
ofType:@"jpg"
inDirectory:documentsDirectoryPath];
}, ^{
});
}
//获取网址并将图片转换成NSData 并且转成image通过block返回image如果失败返回错误信息
void DownloadImage ( NSURL * URL,
void (^imageBlock)(UIImage * image),
void (^errorBlock)(void) )
{
dispatch_async(
dispatch_get_global_queue(
DISPATCH_QUEUE_PRIORITY_DEFAULT,
0 ), ^(void)
{
NSData * data = [[NSData
alloc] initWithContentsOfURL:URL];
UIImage * image = [[UIImage
alloc] initWithData:data];
dispatch_async(
dispatch_get_main_queue(), ^(void){
if( image !=
nil )
{
imageBlock( image );
} else {
errorBlock();
}
});
});
}
//将图片存储到沙盒目录下存储成jpg形式
-(void) saveImage:(UIImage *)image withFileName:(NSString *)imageName ofType:(NSString
*)extension inDirectory:(NSString *)directoryPath {
if ([[extension
lowercaseString]
isEqualToString:@"png"]) {
[UIImagePNGRepresentation(image)
writeToFile:[directoryPath
stringByAppendingPathComponent:[NSString
stringWithFormat:@"%@.%@", imageName,
@"png"]]
options:NSAtomicWrite
error:nil];
} else
if ([[extension
lowercaseString]
isEqualToString:@"jpg"] || [[extension
lowercaseString]
isEqualToString:@"jpeg"]) {
[UIImageJPEGRepresentation(image,
1.0)
writeToFile:[directoryPath
stringByAppendingPathComponent:[NSString
stringWithFormat:@"%@.%@", imageName,
@"jpg"]]
options:NSAtomicWrite
error:nil];
} else {
//ALog(@"Image Save Failed\nExtension: (%@) is not recognized, use (PNG/JPG)", extension);
NSLog(@"文件后缀不认识");
}
}
//获取图片 model1.urlId获取图片
NSString * documentsDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask,
YES) objectAtIndex:0];
NSString *filestr = [NSString
stringWithFormat:@"/%@.jpg",_model1.urlId
];
NSString
*newstr = [NSString
stringWithFormat:@"%@%@",documentsDirectoryPath,filestr];
NSData
*imageData = [NSData
dataWithContentsOfFile:newstr];
UIImage* image = [[UIImage
alloc]
initWithData:imageData];
_imageview.image = image;
model.urlId
为每一个网址图片的唯一标示,避免重复,如果重复会将原来图片覆盖
model.urlStr = @"http://img1.126.net/channel6/2016/022471/0805/2.jpg?dpi=6401136"
-(void)getData:(ADModel*)model{
NSString * documentsDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask,
YES) objectAtIndex:0];
DownloadImage([NSURL
URLWithString:model.urlStr],
^(UIImage *image) {
[self
saveImage:image withFileName:model.urlId
ofType:@"jpg"
inDirectory:documentsDirectoryPath];
}, ^{
});
}
//获取网址并将图片转换成NSData 并且转成image通过block返回image如果失败返回错误信息
void DownloadImage ( NSURL * URL,
void (^imageBlock)(UIImage * image),
void (^errorBlock)(void) )
{
dispatch_async(
dispatch_get_global_queue(
DISPATCH_QUEUE_PRIORITY_DEFAULT,
0 ), ^(void)
{
NSData * data = [[NSData
alloc] initWithContentsOfURL:URL];
UIImage * image = [[UIImage
alloc] initWithData:data];
dispatch_async(
dispatch_get_main_queue(), ^(void){
if( image !=
nil )
{
imageBlock( image );
} else {
errorBlock();
}
});
});
}
//将图片存储到沙盒目录下存储成jpg形式
-(void) saveImage:(UIImage *)image withFileName:(NSString *)imageName ofType:(NSString
*)extension inDirectory:(NSString *)directoryPath {
if ([[extension
lowercaseString]
isEqualToString:@"png"]) {
[UIImagePNGRepresentation(image)
writeToFile:[directoryPath
stringByAppendingPathComponent:[NSString
stringWithFormat:@"%@.%@", imageName,
@"png"]]
options:NSAtomicWrite
error:nil];
} else
if ([[extension
lowercaseString]
isEqualToString:@"jpg"] || [[extension
lowercaseString]
isEqualToString:@"jpeg"]) {
[UIImageJPEGRepresentation(image,
1.0)
writeToFile:[directoryPath
stringByAppendingPathComponent:[NSString
stringWithFormat:@"%@.%@", imageName,
@"jpg"]]
options:NSAtomicWrite
error:nil];
} else {
//ALog(@"Image Save Failed\nExtension: (%@) is not recognized, use (PNG/JPG)", extension);
NSLog(@"文件后缀不认识");
}
}
//获取图片 model1.urlId获取图片
NSString * documentsDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask,
YES) objectAtIndex:0];
NSString *filestr = [NSString
stringWithFormat:@"/%@.jpg",_model1.urlId
];
NSString
*newstr = [NSString
stringWithFormat:@"%@%@",documentsDirectoryPath,filestr];
NSData
*imageData = [NSData
dataWithContentsOfFile:newstr];
UIImage* image = [[UIImage
alloc]
initWithData:imageData];
_imageview.image = image;
相关文章推荐
- iOS开发——多线程篇——快速生成沙盒目录的路径,多图片下载的原理、SDWebImage框架的简单介绍
- iOS 截屏/将图片存储到相册或沙盒目录下
- ios 图片的网络下载和显示(可缓存)
- [IOS]网络操作+图片的下载和读取+json数据读取
- iOS基础8:自定义MyData/自定义SQLite用于网络判断,版本判断,图片缓存处理,下载或者上传的GET或POST请求,加密手段,.数据解析
- 通过AFNetworking下载网络闪屏用的图片并存储到本地同时获取header头相关信息
- 猫猫学iOS(五十五)多线程网络之图片下载框架之SDWebImage
- ios 从网络下载图片,保存,并用imageview从保存中显示
- iOS-下载一张网络图片
- ios-day12-01(ios开发中的数据存储的常用方式有哪些、应用沙盒目录结构、应用沙盒目录路径的常见获取方式)
- ios存储网络下载的大数据被appstore拒绝解决方案
- iOS 通过网络请求获取图片的下载歌曲
- ios 从网络下载图片,保存,并用imageview从保存中显示
- iOS下载网络图片
- ios 从网络下载图片,保存,并用imageview从保存中显示
- ios 从网络下载图片,保存,并用imageview从保存中显示
- iOS-网络图片下载
- java 下载网络上的图片并保存到本地目录
- iOS 关于音乐图片下载到本地沙盒的一些事
- 猫猫学iOS(五十一)多线程网络之GCD下载合并图片_队列组的使用