博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS 图片缓存 详解
阅读量:2394 次
发布时间:2019-05-10

本文共 1787 字,大约阅读时间需要 5 分钟。

1> 把图片转为 base64的字符串存到数据库中或者plist文件中,然后用到的时候再取出来
//
获取沙盒路径
NSString *path_sandox = NSHomeDirectory();
//
创建一个存储
plist
文件的路径
NSString
*newPath = [path_sandox
stringByAppendingPathComponent
:
@"/Documents/pic.plist"
];
UIImage
*image = [
UIImage
imageNamed
:
@"a.jpg"
];
NSMutableArray
*arr = [[
NSMutableArray
alloc
]
init
];
[arr
addObject
:image];
[self writeImageInPlist:arr plistPath:newPath];
 
=================================================================================
/**
 *
UIImage
对象写入
plist
文件
 */
- (
BOOL
)writeImageInPlist:(
NSArray
*)images plistPath:(
NSString
*)path
{
   
NSMutableArray
*arr = [[
NSMutableArray
alloc
]
init
];
   
for
(
UIImage
*image
in
images)
    {
       
NSData
*data =
UIImageJPEGRepresentation
(image,
1.0f
);
       
NSString
*strimage64 = [data
base64EncodedStringWithOptions
:
0
];
        [arr
addObject
:strimage64];
    }
   
//
写入
plist
文件,要是未找到该文件会自动创建
   
if
([arr
writeToFile
:path
atomically
:
YES
])
    {
       
return
YES
;
    }
   
else
    {
       
return
NO
;
    }
}
=================================================================================
将 Base64 字符串转换成UIImage 对象
NSData
*decodedImageData = [[
NSData
alloc
]
initWithBase64EncodedString
:strimage64
options
:
NSDataBase64DecodingIgnoreUnknownCharacters
];
UIImage *decodedImage = [UIImageimageWithData:decodedImageData];
 
2> 把图片直接保存到沙盒中,然后再把路径存储起来,等到用图片的时候先获取图片的路径,再通过路径拿到图片
/**
 *
保存
UIImage
对象到本地缓存目录中的相对路径
 */
+ (
NSString
*)saveImageInLocal:(
UIImage
*)image
{
   
NSString
*path = [
NSString
stringWithFormat
:
@"/%@.png"
, [
NSString
getRandomStr
]];
   
NSString
*imagePath = [
kDocumentFolder
stringByAppendingString
:path];
    [
UIImagePNGRepresentation
(image)
writeToFile
:imagePath
atomically
:
YES
];
   
return
path;
}
/**
 *
从本地目录获取图片
 */
+ (
UIImage
*)getImageInLocal:(
NSString
*)imagePath
{
   
return
[
UIImage
imageWithContentsOfFile
:imagePath];
}

转载地址:http://msgab.baihongyu.com/

你可能感兴趣的文章
java中IO流Properties集合
查看>>
java中的常用编码表
查看>>
java中IO流字符流中的编码
查看>>
java中多线程概述
查看>>
Linux系统常用的命令
查看>>
linux常用命令 文件操作类
查看>>
Linux常用命令-VI与VIM编辑器介绍
查看>>
linux常用命令-重定向与管道操作
查看>>
linux下用户与组管理-用户管理
查看>>
linux下用户与组管理-组管理与帐户文件介绍
查看>>
linux下文件权限管理介绍
查看>>
linux下常用网络操作(重点)
查看>>
linux在下软件安装-jdk和tomcat安装
查看>>
java框架基础 静态代理和动态代理
查看>>
jQuery ajax开发基于json
查看>>
oracle数据库
查看>>
oracle中间的数据类型
查看>>
oracle中创建表空间和创建用户
查看>>
同态加密
查看>>
换手机号之后
查看>>