2012-10-02 97 views
2

我有一個圖像壓縮成NSData使用JPEG壓縮。我使用[UIImage imageWithContentsOfFile:]訪問它。儘管更大的圖像,這需要幾秒鐘。是否有更快的方式從文件系統加載圖像,可能速度與圖像從包中加載的速度相同?如果沒有,有沒有辦法在全品質版本加載時暫時加載較低質量版本的圖像,而不是保存較低質量的版本?從NSData獲取較低質量的UIImage?

回答

3

雖然你可能能夠建立這樣的使用JPEG 2000(你需要建立自己的JPEG文件的副本discussed here,然後手工編寫代碼,閱讀),我不不要以爲你會在那裏獲得良好的投資回報。從磁盤讀取數據的成本仍然可能壓倒一切。

首先,如果你從你的包讀書,如果在所有可能使用PNG。 iOS高度優化存儲在包中的PNG(複製過程的一部分是用iOS特定的優化格式重寫它們)。

不管你做什麼,如果你想有一個佔位符,你可能會需要以某種方式提供它自己,無論是作爲一個單獨的文件,或者您已閱讀並管理自己的自定義文件格式。這不會是一種難以置信的難以設計的格式,但您仍然需要在某處預先調整大小。

主要的關鍵是,閱讀了大量的圖像文件是昂貴的,你不應該這樣做在主線程上。您需要在後臺隊列(GCD或操作)上執行此操作,並在數據可用時更新UI。這個事實並沒有真正簡單的方法。

-1

低建築質素是比別人更小的文件...這裏是檢查應用程序的文件夾中的文件的代碼。

NSFileManager *manager = [NSFileManager defaultManager]; 
if ([manager fileExistsAtPath:path]) { 
    NSDictionary *attributes = [manager attributesOfItemAtPath:path error:nil]; 
    unsigned long long size = [attributes fileSize]; 
    resultlbl.text = [NSString StringWithFormat:@"%d",size]; 
}