您的位置:首页 > 理论基础 > 计算机网络

本地获取图片的几种常用方式和网络获取图片

2016-10-24 11:19 423 查看

前言

通常,我们从本地获取图片的方式用得最多的莫过于[UIImage imageNamed:]了,方便、快速、易用,但是有着它的缺陷,那就是不宜获取太大的图片,所以,本文主要浅析一下几种常见的本地获取图片的方式,以及网络获取图片,具体如下:

正文

本地获取图片

方法1:[UIImage imageNamed:]

原理:第一次先从资源包[NSBundle mainBundle]中获取图片,取出来之后放到内存中进行缓存,下次直接从缓存中获取,而不需要再从资源包中获取。

缺陷:获取的图片不宜过大,适合加载本地占用内存较小的图片,因为图片放在应用程序包的内存中,内存空间是不会存放过大的图片的。

代码:

UIImage *image = [UIImage imageNamed:@"scenery.jpg"];


方法2:直接从资源包[NSBundle mainBundle]根据路径获取

代码:

NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"scenery.jpg" ofType:nil];
UIImage *image = [UIImage imageWithContentsOfFile:imagePath];


方法3:直接从资源包[NSBundle mainBundle]根据路径获取,然后通过NSData转化获取图片

代码:

NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"scenery.jpg" ofType:nil];
//相对方法2,增加了这一步转化
NSData *imageData = [NSData dataWithContentsOfFile:imagePath];
UIImage *image = [UIImage imageWithData:imageData];


方法4:通过[NSURL fileURLWithPath:]的方式获取

代码:

NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"scenery.jpg" ofType:nil];
//相对方法3,增加了这一步转化
NSURL *url = [NSURL fileURLWithPath:imagePath];
NSData *data = [NSData dataWithContentsOfURL:url];
UIImage *image = [UIImage imageWithData:data];


网络加载(获取)图片

代码示例:

NSURL *url = [NSURL URLWithString:@"http://d.hiphotos.baidu.com/image/pic/item/5fdf8db1cb134954ca0604bc524e9258d0094aca.jpg"];
NSData *data = [NSData dataWithContentsOfURL:url];
UIImage *image = [UIImage imageWithData:data];


附加

有时候,我们想将一张图片转化成数据,这样就可以将图片数据写入、保存到相应的某个文件路径中,这时可以使用这种方法:

方法:
01:  第一个参数是所需要转化成数据的JPEG格式图片,第二个参数代表压缩值(取值范围0~1),如果想让图片不变,压缩值为1.0即可。
NSData *data = UIImageJPEGRepresentation(<#UIImage * _Nonnull image#>, <#CGFloat compressionQuality#>)
示例:
UIImage *image = [UIImage imageNamed:@"scenery.jpg"];
NSData *data = UIImageJPEGRepresentation(image, 1.0);

----------

02:PNG格式图片压缩
UIImagePNGRepresentation(<#UIImage * _Nonnull image#>)
示例:
UIImage *image = [UIImage imageNamed:@"scenery.png/jpg"];
NSData *data = UIImagePNGRepresentation(image);


本文若有疏漏之处,望留言指出,我会虚心接受大家的建议和意见,共同学习,共同进步!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  图片 uiimage NSData