麦子学院ios笔记:IOS把图片缓存到本地的几种方法

把ios的图片缓存到本地的方法有几种?现在来看看学生在麦子学院学习ios开发的笔记中有讲到哪几种方法呢?

<code>把图片缓存到本地,在很多场景都会用到,如果是只储存文字信息,那建一个plist文件,或者数据库就能很方便的解决问题,但是如果存图片到沙盒就没那么方便了。这里介绍两种保存图片到沙盒的方法。

</code>

一.把图片转为base64的字符串存到数据库中或者plist文件中,然后用到的时候再取出来

<code
class="hljs" objectivec="">    //获取沙盒路径,

NSString *path_sandox = NSHomeDirectory();

//创建一个存储plist文件的路径

NSString *newPath = [path_sandox
stringByAppendingPathComponent:@/Documents/pic.plist];

NSMutableArray *arr = [[NSMutableArray alloc]
init];

//把图片转换为Base64的字符串

NSString *image64 = [self
encodeToBase64String:image];

[arr addObject:image64];

//写入plist文件

if ([arr writeToFile:newPath
atomically:YES]) {

NSLog(@写入成功);

};

</code>

这样就存起来的,然后用到的时候再利用存储的字符串转化为图片

<code
class="hljs" perl="">NSData *_decodedImageData   = [[NSData alloc]
initWithBase64Encoding:image64];

UIImage *_decodedImage      =
[UIImage imageWithData:_decodedImageData];</code>

二.把图片直接保存到沙盒中,然后再把路径存储起来,等到用图片的时候先获取图片的路径,再通过路径拿到图片

<code class="hljs" objectivec="">//拿到图片

UIImage *image = [UIImage imageNamed:@flower.png]; NSString
*path_sandox = NSHomeDirectory();

//设置一个图片的存储路径

NSString *imagePath = [path_sandox
stringByAppendingString:@/Documents/flower.png];

//把图片直接保存到指定的路径(同时应该把图片的路径imagePath存起来,下次就可以直接用来取)

[UIImagePNGRepresentation(image) writeToFile:imagePath
atomically:YES];</code>

下次利用图片的地址直接来拿图片。
同时附上获取沙盒目录的代码
沙盒文件目录获取代码:

//Home目录

<code class="hljs" fix="">NSString
*homeDirectory = NSHomeDirectory();</code>

//Document目录

<code class="hljs" objectivec="">NSArray
*paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);

NSString *path = [paths objectAtIndex:0];</code>

//Cache目录

<code class="hljs" objectivec="">NSArray
*paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory,
NSUserDomainMask, YES);

NSString *path = [paths objectAtIndex:0]; </code>

//Libaray目录

<code class="hljs" objectivec="">NSArray
*paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,
NSUserDomainMask, YES);

NSString *path = [paths objectAtIndex:0];</code>

更多麦子学院ios开发教程以及笔记尽在:http://www.maiziedu.com/course/ios/

时间: 2024-10-09 10:12:49

麦子学院ios笔记:IOS把图片缓存到本地的几种方法的相关文章

IOS把图片缓存到本地的几种方法

把图片缓存到本地,在很多场景都会用到,如果是只储存文字信息,那建一个plist文件,或者数据库就能很方便的解决问题,但是如果存图片到沙盒就没那么方便了.这里介绍两种保存图片到沙盒的方法. 一.把图片转为base64的字符串存到数据库中或者plist文件中,然后用到的时候再取出来 //获取沙盒路径, NSString *path_sandox = NSHomeDirectory(); //创建一个存储plist文件的路径 NSString *newPath = [path_sandox strin

php如何防止图片盗用/盗链的两种方法(转)

图片防盗链有什么用? 防止其它网站盗用你的图片,浪费你宝贵的流量.本文章向大家介绍php防止图片盗用/盗链的两种方法 Apache图片重定向方法 设置images目录不充许http访问 Apache服务器下防止图片盗链的办法 如果你的网站以图片为主,哪天发现月底没到流量就快用光了,那就可以利用图片转向,在不修改网页的前提下,把图片下载请求转向到其它空间(比如试用主机),临时过渡. (详细请点击)http://www.cnblogs.com/myhomepages/p/6017867.html

php如何防止图片盗用/盗链的两种方法

如今的互联网,采集网站非常多,很多网站都喜欢盗链/盗用别人网站的图片,这样不仅侵犯网权,还导致被盗链的网站消耗大量的流量,给服务器造成比较大的压力,本文章向大家介绍php如何防止图片盗用/盗链的两种方法,需要的朋友可以参考一下. 图片防盗链有什么用? 防止其它网站盗用你的图片,浪费你宝贵的流量.本文章向大家介绍php防止图片盗用/盗链的两种方法 Apache图片重定向方法 设置images目录不充许http访问 Apache服务器下防止图片盗链的办法 如果你的网站以图片为主,哪天发现月底没到流量

iOS网络加载图片缓存与SDWebImage

加载网络图片可以说是网络应用中必备的.如果单纯的去下载图片,而不去做多线程.缓存等技术去优化,加载图片时的效果与用户体验就会很差. 一.自己实现加载图片的方法 tips: *iOS中所有网络访问都是异步的.(自己开线程去下载) *普通为模型增加UIImage属性的方法做的是内存缓存(下次启动还需要从网络重新加载), 而要做本地缓存的话,还要自己手动存储网络上下载的图片. *为了加快访问, 还需要自己去弄缓存.(内存缓存或者本地缓存) *当图片没有下载完成时,还要设置占位图片. 以下代码用NSOp

【代码笔记】清除图片缓存UIActionSheet

一,效果图. 二,代码. RootViewController.m //点击任何处出现sheet -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { UIActionSheet * sheet = [[UIActionSheet alloc] initWithTitle:@"确定要清空图片缓存?" delegate:self cancelButtonTitle:@"取消" destruc

iOS 清理缓存功能的实现第二种方法

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 /**  *  清理缓存第二种方法  *  *  @param sender <#sender description#>  */ - (void)clearCache:(id)sender {     //彻底清除

Flutter 实现图片缓存到本地

网上可能有很多实现的插件,有些动不动就上千行代码, 其实很简单 只需要在源码的基础上加一个本地缓存就行, 毕竟源码是最可靠的  https://github.com/dikeboy/flutter-cache-image-local Flutter  自带的有2个 图片的Widget ,Image 和FadeInImage, 从字面上就能理解 FadeIn是多了个预加载的图, FadeInImage 有两个 方法 ,memoryNetwork 和assertNetwork  预加载图来源于二进制

iOS 本地存储四种方法(没看)

在iOS开发过程中,不管是做什么应用,都会碰到数据保存的问题.将数据保存到本地,能够让程序的运行更加流畅,不会出现让人厌恶的菊花形状,使得用户体验更好.下面介绍?一下数据保存的方式: 1.NSKeyedArchiver:采用归档的形式来保存数据,该数据对象需要遵守NSCoding协议,并且该对象对应的类必须提 供encodeWithCoder:和initWithCoder:方法.前?一个方法告诉系统怎么对对象进行编码,而后?一个方法则是告诉系统怎 么对对象进行解码.例如对Possession对象

iOS 本地存储四种方法

在iOS开发过程中,不管做什么应用都会碰到数据保存的问题.将数据保存到本地,能够让程序更加流畅,不会出现让人厌恶的菊花状态.使得用户体验更好. 下面就来介绍数据保存的方式: 1.NSKeyedArchiver:采用归档的形式来保存数据,该数据对象需要遵守NSCoding协议,并且该对象对应的类必须提供encodeWithCoder:和initWithCoder:方法. 前一个方法告诉系统怎么对对象进行编码,而后一个方法则是告诉系统怎么对对象进行解码.例如对Possession对象归档保存. 定义