2012-10-02 42 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]; 
}