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