• iOS 网络与多线程--6.下载并保存网络图片


    使用二进制数据对象的,从制定网站获取数据的方法,下载网络图片,并转化为二进制数据,然后将二进制数据保存到磁盘

    按照注释需要进行阅读以下代码

     1 //  Created by JinXin on 15/12/2.
     2 //  Copyright © 2015年 JinXin. All rights reserved.
     3 //
     4 
     5 #import "ViewController.h"
     6 
     7 @interface ViewController ()
     8 @end
     9 
    10 @implementation ViewController
    11 
    12 - (void)viewDidLoad {
    13     [super viewDidLoad];
    14     // Do any additional setup after loading the view, typically from a nib.
    15     
    16     // 5.获取项目沙箱中的Documents文件夹。
    17     NSString *documentsDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
    18             NSUserDomainMask, YES) objectAtIndex:0];
    19     // 6.获取网络图片
    20     UIImage *imageFromURL = [self getImageFromURL:@"http://face.weiphone.net/data/avatar/001/27/35/59_avatar_big.jpg"];
    21     // 7.将图片保存到磁盘
    22     [self saveImage:imageFromURL withFileNmae:@"image" ofType:@"jpg" inDirectory:documentsDirectoryPath];
    23     // 7.输出路径
    24     NSLog(@"Path of saved image:%@",documentsDirectoryPath);
    25     
    26 }
    27 
    28 // 1.创建一个方法,用来获取网络图片,参数为图片的网络路径
    29 -(UIImage *)getImageFromURL:(NSString *)fileURL
    30 {
    31     NSLog(@"Getting image........");
    32     UIImage *result;
    33     
    34     // 2.获取网络图片,并将数据存入二进制数据对象
    35     NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:fileURL]];
    36     // 3.将二进制数据转为图像
    37     result = [UIImage imageWithData:data];
    38     // 4.返回结果
    39     return result;
    40 }
    41 
    42 // 2.创建一个方法,用来将图像保存到磁盘
    43 // 参数1.UIImage 对象
    44 // 参数2.文件名
    45 // 参数3.文件类型
    46 // 参数4.保存文件的路径
    47 -(void)saveImage:(UIImage *)image withFileNmae:(NSString *)imageName ofType:(NSString *)extension
    48      inDirectory:(NSString *)directoryPath
    49 {
    50     // 3.检测图片扩展名,如果是png后缀,则使用UIImagePNGRepresentation方法,将图片转为二进制数据,并写入磁盘
    51     if ([[extension lowercaseString] isEqualToString:@"png"])
    52     {
    53         [UIImagePNGRepresentation(image) writeToFile:[directoryPath stringByAppendingPathComponent:
    54             [NSString stringWithFormat:@"%@.%@",imageName,@"png"]] options:NSAtomicWrite error:nil];
    55     }
    56     // 4. 检测图片扩展名,如果是jpg后缀,则使用UIImageJPEGRepresentation方法,将图片转为二进制数据,并写入磁盘
    57     else if ([[extension lowercaseString] isEqualToString:@"jpg"] || [[extension lowercaseString] isEqualToString:@"jpeg"] )
    58     {
    59         [UIImageJPEGRepresentation(image, 1.0) writeToFile:[directoryPath stringByAppendingPathComponent:
    60             [NSString stringWithFormat:@"%@.%@",imageName,@"jpg"]] options:NSAtomicWrite error:nil];
    61     }
    62 }
    63 
    64 - (void)didReceiveMemoryWarning {
    65     [super didReceiveMemoryWarning];
    66     // Dispose of any resources that can be recreated.
    67 }
    68 
    69 @end

    输出结果:

    1 2015-12-04 21:58:47.132 AppDemo[1030:104437] Getting image........
    2 2015-12-04 21:58:47.312 AppDemo[1030:104437] Path of saved image:/Users/jinxin/Library/Developer/CoreSimulator/Devices/78B0547C-FAC7-4343-AAF0-EEB564932491/data/Containers/Data/Application/5051F20E-5736-46DC-BC4E-C00D9F9CDDFF/Documents

    之后打开finder 按Shift+Command+G 将路径粘贴进去 进入目录

    将可以看到下载到的图片了

  • 相关阅读:
    ubuntu文件夹建立软链接方法
    编译android内核和文件系统,已经安装jdk,提示build/core/config.mk:268: *** Error: could not find jdk tools.jar
    ubuntu12.04配置NFS服务详解
    解决ubuntu10.04不能上网
    GC
    IO
    HashMap
    JavaBean的介绍
    SSO二 之CAS
    SSO一 之介绍
  • 原文地址:https://www.cnblogs.com/-jpp/p/5020665.html
Copyright © 2020-2023  润新知