zoukankan      html  css  js  c++  java
  • 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 将路径粘贴进去 进入目录

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

  • 相关阅读:
    2015.2.27 UltraEdit中显示XML结构
    2015.1.31 DataGridView自动滚动到某行
    2015.1.15 利用函数实现将一行记录拆分成多行记录 (多年想要的效果)
    2015.1.15 利用Oracle函数返回表结果 重大技术进步!
    2015.1.15 利用Oracle函数插入表结构 Bulk collect into 不用循环,简洁高效
    2015.1.8 Left join 左连接
    2015.1.10 解决DataGridView SelectionChanged事件自动触发问题
    delphi 遍历窗口
    delphi 访问 protected 属性 哈哈
    clientdataset 读取excel 如果excel 文件不存在的时候 相应的gird 会不显示数据, 鼠标掠过 gird 格子 才会显示数据。 这是一个bug 哈哈
  • 原文地址:https://www.cnblogs.com/-jpp/p/5020665.html
Copyright © 2011-2022 走看看