2014-03-25 86 views
0

我正在尋找一種方法來獲取磁盤上的圖像的寬度和高度,而無需將整個圖像加載到內存中。圖像尺寸沒有加載

我需要支持BMP和PNG圖像; TGA也不錯。

我已經在使用DirectX11,DirectX工具包,CxImage和Boost庫,因此使用這些庫中的一種來完成它的方法會很棒。但是,我也願意使用其他庫

+0

你看過這個答案嗎?這似乎是相同的情況。 http://stackoverflow.com/a/5354657/1484168 –

+0

@stefan是這意味着成爲一個評論。感謝您的轉換 –

+0

謝謝@ iRebel_85,這有助於執行 – Lukas

回答

4

對於BMP,請在bytes 18 through 21中讀取寬度,並使用字節22到25來獲取高度。

對於PNG,請從文件的IHDR chunk(它看起來在文件的前八個字節後面開始)以及header of the IHDR chunk itself的八個字節中讀入維度。字節16到19將給出寬度,字節20到23給出高度。

同樣,TGA,你可以閱讀first 18 bytes (with advised notes)成TGA頭struct然後取消引用結構實例的widthheight性能。

在C++中,您可以使用標準C I/O(例如,fopen()fseek()fread())來打開,移動和讀取文件指針中的字節。您不必讀取整個文件:只需移至正確的字節偏移量,然後讀取正確的字節數。

+1

Thx,我通過以下方式實現它http://pastebin.com/AiUfzRer – Lukas

+0

我忘記了在打開文件時添加二進制標誌。更正版本在這裏http://pastebin.com/uR8T5wYf – Lukas