存储为NSData的UIImage的大小?

时间:2012-10-15 17:55:31

标签: objective-c ios cocoa-touch uiimage nsdata

我能否在不使用[UIImage imageWithContentsOfFile:];的情况下获取存储为NSData的UIImage的大小(CGSize)?能够做到这一点会使我的代码运行得更快。

4 个答案:

答案 0 :(得分:2)

你不会使用CoreGraphics或UIKit。您需要检查二进制流。幸运的是,它之前已经用许多其他语言完成了。一个快速的谷歌在Ruby中找到了this implementation来确定文件类型(jpg,bmp,png和gif)并拉出图像的尺寸。应该很容易使用NSData转换为Objective-C。从parse_size函数开始。

答案 1 :(得分:1)

存储为NSData的图像可以是任意数量的格式,例如png,jpg,tiff,gif,raw等。当你拥有的是一个字节blob时,它不是UIImage。因此,通常,您无法确定存储为NSData对象的图像的大小。

如果您可以保证每个NSData图像都以相同的格式存储,例如PNG,那么您可以根据PNG数据文件格式扫描NData以获取大小信息。这可能比从数据创建UIImage更有效。但显然这是一项更多的工作。

答案 2 :(得分:0)

保存时将大小信息写入某种数据库。

要获取磁盘上文件的大小,可以使用NSFileManager attributesOfItemAtPath:error:

答案 3 :(得分:0)

您可以找到有用的CGImageSource API。 Ole Begemann在这个话题上有一个很棒的tutorial