本地获取图片的几种常用方式和网络获取图片
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);
本文若有疏漏之处,望留言指出,我会虚心接受大家的建议和意见,共同学习,共同进步!
相关文章推荐
- 获取网络图片的几种方式
- 网络获取图片操作的几种方式
- 流的方式读取本地图片和网络图片
- 图片、缓存-Android仿人人客户端(v5.7.1)——对从服务器端(网络)获取的图片进行本地双缓存处理(编码实现)-by小雨
- 2、跑马灯效果-获取网络图片并缓存到本地
- Flex加载图片的常用的几种方式
- http协议get方式从服务器获取图片并保存到本地
- 网络爬虫之获取图片到本地
- ListView的常见优化:获取网络图片异步加载,分批加载,分页显示,图片缓存等优化方式
- QF——网络之网络请求的几种方式,图片缓存
- Flex加载图片的常用的几种方式
- 【C++】保存网络获取的图片至本地
- 从网络上获取图片的两种方式讲解:thread+handle和AsyncTask方式
- Android 中获取图片资源的几种方式
- Silverlight杂记-获取网络数据源的几种方式
- Android仿人人客户端(v5.7.1)——对从服务器端(网络)获取的图片进行本地双缓存处理(编码实现)
- 几种常用的网络负载均衡方式比较
- Flex加载图片的常用的几种方式
- ImageView以流的方式获取网络图片
- Android网络获取图片保存到本地,并在ViewPager中显示图片