最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS把圖片緩存到本地的幾種方法(總結(jié))

 更新時(shí)間:2017年12月29日 14:33:40   投稿:jingxian  
下面小編就為大家分享一篇iOS把圖片緩存到本地的幾種方法總結(jié),具有很的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

把圖片緩存到本地,在很多場(chǎng)景都會(huì)用到,如果只是存儲(chǔ)文件信息,那建一個(gè)plist文件,或者數(shù)據(jù)庫(kù)就能很方便的解決問(wèn)題,但是如果存儲(chǔ)圖片到沙盒就沒(méi)那么方便了。這里簡(jiǎn)單介紹兩種保存圖片到沙盒的方法。

一、把圖片轉(zhuǎn)為base64的字符串存到數(shù)據(jù)庫(kù)中或者plist文件中,然后用到的時(shí)候再取出來(lái)

 //獲取沙盒路徑,
 NSString *path_sandox = NSHomeDirectory();
 //創(chuàng)建一個(gè)存儲(chǔ)plist文件的路徑
 NSString *newPath = [path_sandox stringByAppendingPathComponent:@/Documents/pic.plist];
 NSMutableArray *arr = [[NSMutableArray alloc] init];
 UIImage *image = [UIImage imageNamed:@"1.png"];
  
 /*
  把圖片轉(zhuǎn)換為Base64的字符串 

  在iphone上有兩種讀取圖片數(shù)據(jù)的簡(jiǎn)單方法: UIImageJPEGRepresentation和UIImagePNGRepresentation. 
  
  UIImageJPEGRepresentation函數(shù)需要兩個(gè)參數(shù):圖片的引用和壓縮系數(shù).而UIImagePNGRepresentation只需要圖片引用作為參數(shù).通過(guò)在實(shí)際使用過(guò)程中,
  比較發(fā)現(xiàn): UIImagePNGRepresentation(UIImage* image) 要比UIImageJPEGRepresentation(UIImage* image, 1.0) 返回的圖片數(shù)據(jù)量大很多.
  譬如,同樣是讀取攝像頭拍攝的同樣景色的照片, UIImagePNGRepresentation()返回的數(shù)據(jù)量大小為199K ,
  而 UIImageJPEGRepresentation(UIImage* image, 1.0)返回的數(shù)據(jù)量大小只為140KB,比前者少了50多KB.
  如果對(duì)圖片的清晰度要求不高,還可以通過(guò)設(shè)置 UIImageJPEGRepresentation函數(shù)的第二個(gè)參數(shù),大幅度降低圖片數(shù)據(jù)量.譬如,剛才拍攝的圖片, 
  通過(guò)調(diào)用UIImageJPEGRepresentation(UIImage* image, 1.0)讀取數(shù)據(jù)時(shí),返回的數(shù)據(jù)大小為140KB,但更改壓縮系數(shù)后,
  通過(guò)調(diào)用UIImageJPEGRepresentation(UIImage* image, 0.5)讀取數(shù)據(jù)時(shí),返回的數(shù)據(jù)大小只有11KB多,大大壓縮了圖片的數(shù)據(jù)量 ,
  而且從視角角度看,圖片的質(zhì)量并沒(méi)有明顯的降低.因此,在讀取圖片數(shù)據(jù)內(nèi)容時(shí),建議優(yōu)先使用UIImageJPEGRepresentation,
  并可根據(jù)自己的實(shí)際使用場(chǎng)景,設(shè)置壓縮系數(shù),進(jìn)一步降低圖片數(shù)據(jù)量大小.
  */
 NSData *_data = UIImageJPEGRepresentation(image, 1.0f);
 //將圖片的data轉(zhuǎn)化為字符串
 NSString *strimage64 = [_data base64EncodedString];
 
 [arr addObject:image64]; 
  //寫(xiě)入plist文件 
 if ([arr writeToFile:newPath atomically:YES]) {  
 NSLog(@"寫(xiě)入成功"); 
 };
  //可以到沙河路徑下查看plist文件中的圖片數(shù)據(jù) 
 //這樣就存起來(lái)的,然后用到的時(shí)候再利用存儲(chǔ)的字符串轉(zhuǎn)化為圖片
 //NSData *_decodedImageData = [[NSData alloc] initWithBase64Encoding:image64]; 這是iOS7之前的一個(gè)方法 
 
 NSData *_decodedImageData = [[NSData alloc]initWithBase64EncodedString:strimage64 options:NSDataBase64DecodingIgnoreUnknownCharacters];
 UIImage *_decodedImage = [UIImage imageWithData:_decodedImageData];
 
 //可以打印下圖片是否存在
 NSLog(@"===Decoded image size: %@", NSStringFromCGSize(_decodedImage.size));

二、把圖片直接保存到沙盒中,然后再把路徑存儲(chǔ)起來(lái),等到用圖片的時(shí)候先獲取圖片的路徑,再通過(guò)路徑拿到圖片

 //拿到圖片
 UIImage *image2 = [UIImage imageNamed:@"1.png"]; 
 NSString *path_document = NSHomeDirectory();
 //設(shè)置一個(gè)圖片的存儲(chǔ)路徑
 NSString *imagePath = [path_document stringByAppendingString:@"/Documents/pic.png"];
 //把圖片直接保存到指定的路徑(同時(shí)應(yīng)該把圖片的路徑imagePath存起來(lái),下次就可以直接用來(lái)?。?
 [UIImagePNGRepresentation(image2) writeToFile:imagePath atomically:YES];

下次利用圖片的地址直接來(lái)拿圖片。

UIImage *getimage2 = [UIImage imageWithContentsOfFile:imagePath]; 
NSLog(@"image2 is size %@",NSStringFromCGSize(getimage2.size)); 

同時(shí)附上獲取沙盒目錄的代碼

沙盒文件目錄獲取代碼:

//Home目錄

NSString *homeDirectory = NSHomeDirectory(); 

//Document目錄

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *path = [paths objectAtIndex:0]; 

//Cache目錄

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); 
NSString *path = [paths objectAtIndex:0]; 

//Libaray目錄

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES); 
NSString *path = [paths objectAtIndex:0];

以上這篇iOS把圖片緩存到本地的幾種方法(總結(jié))就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解iOS應(yīng)用中自定義UIBarButtonItem導(dǎo)航按鈕的創(chuàng)建方法

    詳解iOS應(yīng)用中自定義UIBarButtonItem導(dǎo)航按鈕的創(chuàng)建方法

    這篇文章主要介紹了iOS應(yīng)用中自定義UIBarButtonItem導(dǎo)航按鈕的創(chuàng)建方法,文中舉了一個(gè)自定義圖片的UIBarButtonItem實(shí)例,比較具有代表性,需要的朋友可以參考下
    2016-04-04
  • 更新了Xcode8 及 iOS10遇到的問(wèn)題小結(jié)

    更新了Xcode8 及 iOS10遇到的問(wèn)題小結(jié)

    更新了Xcode8 以及 iOS10,App訪(fǎng)問(wèn)用戶(hù)的相機(jī)、相冊(cè)、麥克風(fēng)、通訊錄的權(quán)限都需要重新進(jìn)行相關(guān)的配置,不然在Xcode8中打開(kāi)編譯的話(huà)會(huì)直接crash.這篇文章主要介紹了更新了Xcode8 及 iOS10遇到的問(wèn)題小結(jié)的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • 解決ios端點(diǎn)擊按鈕閃爍問(wèn)題(小tips)

    解決ios端點(diǎn)擊按鈕閃爍問(wèn)題(小tips)

    這篇文章主要介紹了ios端點(diǎn)擊按鈕閃爍的解決方法(小tips),需要的朋友參考下吧
    2017-10-10
  • React Native學(xué)習(xí)教程之Modal控件自定義彈出View詳解

    React Native學(xué)習(xí)教程之Modal控件自定義彈出View詳解

    這篇文章主要給大家介紹了關(guān)于React Native學(xué)習(xí)教程之Modal控件自定義彈出View的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用React Native具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-10-10
  • iOS時(shí)鐘開(kāi)發(fā)案例分享

    iOS時(shí)鐘開(kāi)發(fā)案例分享

    這篇文章主要為大家分享了iOS時(shí)鐘開(kāi)發(fā)案例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-04-04
  • ios獲取數(shù)據(jù)之encodeURI和decodeURI的實(shí)例

    ios獲取數(shù)據(jù)之encodeURI和decodeURI的實(shí)例

    下面小編就為大家?guī)?lái)一篇ios獲取數(shù)據(jù)之encodeURI和decodeURI的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • IOS實(shí)現(xiàn)自定義透明背景的tabbar

    IOS實(shí)現(xiàn)自定義透明背景的tabbar

    這篇文章介紹的是在IOS中怎樣把tabbar背景設(shè)置為透明,有需要的小伙伴們可以參考借鑒。
    2016-08-08
  • Objective-C 經(jīng)典字典數(shù)組排序 - 省市區(qū)

    Objective-C 經(jīng)典字典數(shù)組排序 - 省市區(qū)

    本文主要介紹Objective-C 字典數(shù)組排序,這里整理相關(guān)資料及實(shí)現(xiàn)示例代碼,有興趣的小伙伴可以參考下
    2016-09-09
  • iOS倒計(jì)時(shí)的實(shí)現(xiàn)方法

    iOS倒計(jì)時(shí)的實(shí)現(xiàn)方法

    這篇文章主要為大家詳細(xì)介紹了iOS倒計(jì)時(shí)的實(shí)現(xiàn)方法,點(diǎn)擊進(jìn)行倒計(jì)時(shí)準(zhǔn)備,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • 詳解iOS多線(xiàn)程GCD的使用

    詳解iOS多線(xiàn)程GCD的使用

    Grand Central Dispatch (GCD)是Apple開(kāi)發(fā)的一個(gè)多核編程的解決方法,本文給大家詳細(xì)介紹IOS中GCD的使用,需要的朋友參考下
    2016-03-03

最新評(píng)論

项城市| 庆安县| 桂平市| 阿瓦提县| 嘉黎县| 诸城市| 景泰县| 岐山县| 庐江县| 大邑县| 拜泉县| 五指山市| 镇江市| 永兴县| 正蓝旗| 利川市| 蓝田县| 阿城市| 留坝县| 辉南县| 竹溪县| 天峨县| 威信县| 城固县| 达州市| 丹寨县| 岑巩县| 乐清市| 台中市| 兴海县| 怀柔区| 吐鲁番市| 天等县| 田林县| 晋江市| 依安县| 吉隆县| 八宿县| 宁化县| 景洪市| 新乐市|