Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 从NSData获取低质量的UIImage?_Iphone_Objective C_Ios_Uiimage_Nsdata - Fatal编程技术网

Iphone 从NSData获取低质量的UIImage?

Iphone 从NSData获取低质量的UIImage?,iphone,objective-c,ios,uiimage,nsdata,Iphone,Objective C,Ios,Uiimage,Nsdata,我有一个图像压缩成NSData使用JPEG压缩。我使用[UIImage imageWithContentsOfFile::访问它。但对于较大的图像,这需要几秒钟的时间。是否有更快的方法从文件系统加载图像,可能与从捆绑包加载图像的速度相同?如果没有,除了保存质量较低的版本外,是否有办法在加载全质量版本时临时加载质量较低的图像版本?低质量文件比其他文件小。。。下面是检查应用程序文档文件夹中文件的代码 NSFileManager *manager = [NSFileManager defaultMan

我有一个图像压缩成NSData使用JPEG压缩。我使用
[UIImage imageWithContentsOfFile::
访问它。但对于较大的图像,这需要几秒钟的时间。是否有更快的方法从文件系统加载图像,可能与从捆绑包加载图像的速度相同?如果没有,除了保存质量较低的版本外,是否有办法在加载全质量版本时临时加载质量较低的图像版本?

低质量文件比其他文件小。。。下面是检查应用程序文档文件夹中文件的代码

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];
} 

虽然您可以使用JPEG2000构建类似的东西(您需要构建自己的JPEG库副本,然后手工编写阅读代码),但我认为您不会在那里获得良好的投资回报。从磁盘读取数据的成本仍然可能超过其他所有成本

首先,如果您正在从包中读取数据,请尽可能使用PNG。iOS高度优化捆绑包中存储的PNG(复制过程的一部分是以iOS特定的优化格式重写它们)

无论您做什么,如果您想要一个占位符,您可能需要以某种方式自己提供它,或者作为一个单独的文件,或者作为您自己阅读和管理的自定义文件格式。这不是一个非常难设计的格式,但是您仍然需要在某个地方预先进行所有的大小调整

主要的关键是读取一个大的图像文件是昂贵的,你不应该在主线程上这样做。您需要在后台队列(GCD或操作)上执行这些操作,并在数据可用时更新UI。没有真正简单的方法来回避这个事实