【问题标题】:size of UIImage stored as NSData?存储为 NSData 的 UIImage 的大小?
【发布时间】:2012-10-15 17:55:30
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      存储为 NSData 的图像可以是任意数量的格式,例如 png、jpg、tiff、gif、raw 等。当您只有一个字节时,它不是 UIImage。所以一般来说,你无法确定存储为 NSData 对象的图像的大小。

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

      【讨论】:

      【解决方案3】:

      您可能会发现有用的CGImageSource API。 Ole Begemann 在这个话题上有一个很棒的tutorial

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-08-30
          • 2017-01-17
          相关资源
          最近更新 更多