2012-10-15 44 views
-1

我能否獲得存儲爲NSData的UIImage的大小(CGSize)而不使用[UIImage imageWithContentsOfFile:];?能夠做到這一點會使我的代碼運行得更快。存儲爲NSData的UIImage大小?

回答

1

存儲爲NSData的圖像可以在任意數量的格式,例如一個PNG,JPG,TIFF,GIF,原材料等,這不一個UIImage,當你所有的是一個字節的blob。所以一般來說,你不能確定存儲爲NSData對象的圖像大小。

如果您可以保證每個NSData圖像都以相同的格式存儲(例如PNG),那麼您可以根據PNG數據文件格式掃描NData的大小信息。這可能比從數據創建UIImage更有效。但顯然這是更多的工作。

+1

如果您擁有所有的PNG,PNG特別容易編寫快速解析器來提取大小信息。它位於IHDR塊的開頭,這是該文件中的第一個塊:http://www.libpng.org/pub/png/spec/1.2/PNG-Chunks.html –

+0

它是JPEG格式。 – Andrew

+0

@Andrew:看起來它對於JPG來說簡單:http://www.fastgraph.com/help/jpeg_header_format.html –

2

您將不會使用CoreGraphics或UIKit。你需要檢查二進制流。幸運的是,之前已經有很多其他語言。快速谷歌發現在Ruby中的this implementation決定文件類型(jpg,bmp,png和gif)並拉取圖像的尺寸。應該很容易使用NSData轉換爲Objective-C。從parse_size函數開始。