5
A
回答
7
寬度是從文件中偏移量16開始的4字節整數。高度是從偏移量20開始的另一個4字節整數。它們都是網絡順序,所以您需要轉換爲主機順序來正確解釋它們。
#include <fstream>
#include <iostream>
#include <winsock.h>
int main(int argc, char **argv) {
std::ifstream in(argv[1]);
unsigned int width, height;
in.seekg(16);
in.read((char *)&width, 4);
in.read((char *)&height, 4);
width = ntohl(width);
height = ntohl(height);
std::cout << argv[1] << " is " << width << " pixels wide and " << height << " pixels high.\n";
return 0;
}
3
圖像的尺寸位於頭部,所以你需要加載該文件,並解析了頭。
因此,由於您不想使用第三方庫,您可以隨時檢查PNG規範並實現自己的解析器。
1
您可以隨時手動解碼文件,只需查找您感興趣的位即可。Here's a link to an article about PNG file formats.。您正在尋找包含寬度和高度的IHDR塊。它應該是文件中的第一位數據,因此應該很容易理解。
6
不,你不能不讀取文件的一部分。幸運的是,如果您不需要讀取實際的圖像數據,則文件標頭非常簡單,您可以在沒有庫的情況下閱讀它們。
如果你確定你有一個有效的PNG文件,你可以從偏移量16和20(每個4字節,大端)讀取寬度和高度,但也可能是一個好主意,該文件的前8個字節正好是「89 50 4E 47 0D 0A 1A 0A」(十六進制),而字節12-15正好是「49 48 44 52」(ASCII爲「IHDR」)。
+0
它工作!真的很感謝你 – 2011-03-18 15:59:15
相關問題
- 1. 如何在C#中獲取目錄大小(目錄中的文件)?
- 2. 獲取目錄中文件的大小
- 3. 如何獲取目錄中文件的總計大小?
- 4. 如何獲取C文件的大小?
- 5. 如何在iPhone中獲取圖像的大小(內存大小)?
- 6. C++:獲取的所有文件的大小當前目錄
- 7. 如何獲取C中子目錄的總大小?
- 8. 如何獲取圖像大小在forms.py
- 9. 在C中獲取FTP文件大小#
- 10. 在C++中獲取文件大小
- 11. 在Android中顯示PNG文件(正在調整圖像大小)
- 12. 如何從C#目錄獲取文件
- 13. 如何使用node.js獲取圖像文件的字節大小
- 14. Android:如何從目錄中獲取圖像文件到view.setBackgroundDrawable()
- 15. 如何獲取圖像屬性從文件目錄在PHP
- 16. 獲取文件的大小在objective-c
- 17. 在UIImageView中獲取圖像的大小
- 18. 獲取圖像的圖像文件的大小
- 19. 獲取目錄大小
- 20. 如何在visual C++中獲取文件的大小?
- 21. 如何在C++中獲取文件的大小?
- 22. 如何在TFRecord文件中讀取不同大小的圖像
- 23. 是否可以在Node.js中獲取圖像文件的大小?
- 24. 在tmp文件夾中獲取圖像的大小
- 25. 如何增加Python中PNG文件的像素大小?
- 26. 獲取圖像的大小
- 27. 獲取圖像的大小
- 28. 如何在不加載圖像文件的情況下獲取圖像文件的圖像大小?
- 29. 如何獲取目錄大小,HTML5文件API,使用webkit目錄
- 30. 如何獲取圖像大小到Facebook的評論圖像大小在Android
謝謝你,生病嘗試 – 2011-03-18 15:53:43