iphone - iOS:从网址下载图片并保存在设备中

标签 iphone ios image cocoa-touch ipad

我正在尝试从 url http://a3.twimg.com/profile_images/414797877/05052008321_bigger.jpg 下载图像

我正在使用以下代码,但图像未保存在设备中。我想知道我做错了什么。

 NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://a3.twimg.com/profile_images/414797877/05052008321_bigger.jpg"]];
 [NSURLConnection connectionWithRequest:request delegate:self];

 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
 NSString *documentsDirectory = [paths objectAtIndex:0];
 NSString *localFilePath = [documentsDirectory stringByAppendingPathComponent:@"pkm.jpg"];
 NSData *thedata = NULL;
 [thedata writeToFile:localFilePath atomically:YES];

 UIImage *img = [[UIImage alloc] initWithData:thedata];

最佳答案

我刚好有你要找的东西。

从网址获取图片

-(UIImage *) getImageFromURL:(NSString *)fileURL {
    UIImage * result;

    NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:fileURL]];
    result = [UIImage imageWithData:data];

    return result;
}

保存图片

-(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 {
        NSLog(@"Image Save Failed\nExtension: (%@) is not recognized, use (PNG/JPG)", extension);
    }
}

加载图片

-(UIImage *) loadImage:(NSString *)fileName ofType:(NSString *)extension inDirectory:(NSString *)directoryPath {
    UIImage * result = [UIImage imageWithContentsOfFile:[NSString stringWithFormat:@"%@/%@.%@", directoryPath, fileName, extension]];

    return result;
}

操作方法

//Definitions
NSString * documentsDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

//Get Image From URL
UIImage * imageFromURL = [self getImageFromURL:@"http://www.yourdomain.com/yourImage.png"];

//Save Image to Directory
[self saveImage:imageFromURL withFileName:@"My Image" ofType:@"png" inDirectory:documentsDirectoryPath];

//Load Image From Directory
UIImage * imageFromWeb = [self loadImage:@"My Image" ofType:@"png" inDirectory:documentsDirectoryPath];

关于iphone - iOS:从网址下载图片并保存在设备中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2499176/

相关文章:

ios - RMPolylineAnnotation 未出现在 map (mapbox)上

php - 使用以下用于上传图像的 PHP 代码上传时减小图像大小

ios - 自调整大小的表格 View 单元格不适用于 swift 中的 ExpandingTableView.framework 库

ios - 采取一定数量的步骤后通知。 swift 2.0

javascript - 当 iOS Safari 从另一个应用程序调用时,会触发什么 Javascript 事件

ios - 带有空格的xcode格式数字

python - 兼容 Numpy 的图像绘图库

php - 如果另一个服务器/网站从我的服务器加载图像,如何判断?

iOS App 将通用更改为仅限 iPhone

iphone - 为什么我不能为 Core Plot 构建 SDK?