在大家學會使用C或者C++語言在控制台上輸入輸出後,就會想能不能實作控制台來輸出圖檔。然而在查找之後發現,可以用控制台輸出16色字型。但是關于輸出圖檔則是直接開始介紹windows中gdi提供的bmp圖檔輸出函數。
實際上,在不使用其他工具的情況下控制台主要是用于輸出字元形式。當然我們可以通過這種形式來輸出圖像。但是,由于圖像類型衆多,且圖像的像素資訊擷取方式不同。這裡主要是介紹控制台輸出 各種類型的bmp圖像。核心是将各類圖檔的像素資訊轉換為控制台的顔色資訊,即32位位圖轉化為8位位圖,24位位圖轉化為8位位圖。
首先,在實作控制台顯示BMP圖檔之前,我們需要知道一些原理。
- BMP格式圖檔資訊
(https://blog.csdn.net/wsfdl/article/details/7957370
https://blog.csdn.net/wisepragma/article/details/53228990)
https://www.cnblogs.com/Asssjc/p/5742319.html
https://blog.csdn.net/weixin_42164528/article/details/80594667
- 控制台顔色顯示原理 控制台用1byte表示顔色資訊(前4位為BackgroundColor 後四位為前景色 ForegroundColor)
B1 | B2 | B3 | B4 | F1 | F2 | F3 | F4 |
前四位和後四位顔色組成原理一樣,B1表示顔色明暗,B2表示RED B3表示 GREEN B4表示BLUE 四位共能夠表示16種顔色
3、CHAR_INFO資料結構 螢幕緩沖區字元單元資訊
typedef struct _CHAR_INFO {
union {
WCHAR UnicodeChar;
CHAR AsciiChar;
} Char;
WORD Attributes;
} CHAR_INFO, *PCHAR_INFO;
其中 Char存放字元的碼值 Attributes存放字元屬性
4 程式設計思路就是讀取bmp圖像的位圖頭資訊和位圖資訊,之後根據不同位數的圖像,進行相應讀取圖像顔色資訊,之後進行轉換後列印出來。
注意:圖像大小隻能通過控制台的字元大小來控制
文章後面貼有簡單寫的代碼,僅供參考。
連結:https://pan.baidu.com/s/1K-ydHYAlfWEXztjjDJKpgQ
提取碼:2kcu