我正在尋找一種方法來獲取磁盤上的圖像的寬度和高度,而無需將整個圖像加載到內存中。圖像尺寸沒有加載
我需要支持BMP和PNG圖像; TGA也不錯。
我已經在使用DirectX11,DirectX工具包,CxImage和Boost庫,因此使用這些庫中的一種來完成它的方法會很棒。但是,我也願意使用其他庫
我正在尋找一種方法來獲取磁盤上的圖像的寬度和高度,而無需將整個圖像加載到內存中。圖像尺寸沒有加載
我需要支持BMP和PNG圖像; TGA也不錯。
我已經在使用DirectX11,DirectX工具包,CxImage和Boost庫,因此使用這些庫中的一種來完成它的方法會很棒。但是,我也願意使用其他庫
對於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
然後取消引用結構實例的width
和height
性能。
在C++中,您可以使用標準C I/O(例如,fopen()
fseek()
和fread()
)來打開,移動和讀取文件指針中的字節。您不必讀取整個文件:只需移至正確的字節偏移量,然後讀取正確的字節數。
你看過這個答案嗎?這似乎是相同的情況。 http://stackoverflow.com/a/5354657/1484168 –
@stefan是這意味着成爲一個評論。感謝您的轉換 –
謝謝@ iRebel_85,這有助於執行 – Lukas