天天看點

在控制台輸出BMP圖檔

在大家學會使用C或者C++語言在控制台上輸入輸出後,就會想能不能實作控制台來輸出圖檔。然而在查找之後發現,可以用控制台輸出16色字型。但是關于輸出圖檔則是直接開始介紹windows中gdi提供的bmp圖檔輸出函數。

實際上,在不使用其他工具的情況下控制台主要是用于輸出字元形式。當然我們可以通過這種形式來輸出圖像。但是,由于圖像類型衆多,且圖像的像素資訊擷取方式不同。這裡主要是介紹控制台輸出 各種類型的bmp圖像。核心是将各類圖檔的像素資訊轉換為控制台的顔色資訊,即32位位圖轉化為8位位圖,24位位圖轉化為8位位圖。

首先,在實作控制台顯示BMP圖檔之前,我們需要知道一些原理。

  1. 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

  1. 控制台顔色顯示原理 控制台用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

繼續閱讀