初学ios开发,便遇到了一个实际项目,在现做现学的情况下,终于也把项目的整体框架写好了。
今天在保存图片和读取图片时,遇到了一些问题,好在这些问题前辈们都经历过,也留下了很好宝贵的资料,这才使小弟能顺利解决问题。
这里要感谢http://blog.youkuaiyun.com/jerryvon/article/details/7526147的博主。其实这位博主就图片的操作应经写的很明白了。只是小弟我记性差,非得要亲自动手写出来,这知识点才记得住。
图像的保存
保存到本地目录,其实就是保存到我们的程序。ios保存图片就两个地方,一个是相册,另一个就是本地目录。
首先得获取本地目录,有两种方式
方式一:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *dirPath = paths[0];方式二:
NSString *dirPath=[NSString stringWithFormat:@"%@/Documents",NSHomeDirectory()];
然后就可以设置保存的图片名称
NSString *fileName = [NSString stringWithFormat: @"%@/test.jpg", dirPath];
一般我们都是将UIImage保存成图片文件,步骤如下,
1. 将UIImage转化成二进制数据 (UIImage *image)
NSData *data = UIImageJPEGRepresentation(image, 1.0f);
2. 将NSData数据写入文件
[data writeToFile:fileName atomically:YES];
至此,保存图片就完成了。
再来说说读取图片,其实今天就是卡在读取图片了。
我之前读取图片全都是用UIImage *image = [UIImage imageNamed:@"test.jpg"]这个方法,很好使,没有出现过什么错,然后我就天真的以为读取图片就应该用这个方法。
知道今天要读取本地图片时,我才发现,这个方法不是万能的,它不能读取本地图片。它的作用是读取资源文件中的图片。就是和我们一堆的.h和.m在一个工程下的那些图片。
那么读取本地图片用什么方法呢?用的是如下这个方法。
UIImage *image = [UIImage alloc] initWithContentsOfFile:fileName];
总结一下读取图片就是:
读取工程中的资源图片用
UIImage *image = [UIImage imageNamed:@"test.jpg"]
读取本地的图片用
UIImage *image = [UIImage alloc] initWithContentsOfFile:fileName];