想在vs2012环境下编程,注意是通过字符模式来显示图片,不是切换到图形模式或使用窗体程序,要求能够浏览同一个文件夹下全部的图片,而不是只能用输入名字的方式浏览。
思路如下:
1.先要得到文件夹下全部的.bmp图片文件名称,(dir *.bmp>1.txt),先生成一个txt文件,再将txt文件中的位图名提取出来。
2.利用24位位图图像的存储原理(每个像素用三个字节表示,分别是绿,红,蓝三色的值,文件头+像素数据)。
3.位图中像素信息的获得。
4.近似色彩的表示(用SetConsoleTextAttribute函数)。
5.彩色到灰度图像的转换。
6.灰度与字符的对应关系。
实在不想做的话写个详细的思路也好啊~~求高手
思路如下:
1.先要得到文件夹下全部的.bmp图片文件名称,(dir *.bmp>1.txt),先生成一个txt文件,再将txt文件中的位图名提取出来。
2.利用24位位图图像的存储原理(每个像素用三个字节表示,分别是绿,红,蓝三色的值,文件头+像素数据)。
3.位图中像素信息的获得。
4.近似色彩的表示(用SetConsoleTextAttribute函数)。
5.彩色到灰度图像的转换。
6.灰度与字符的对应关系。
实在不想做的话写个详细的思路也好啊~~求高手
解决方案
5
rgb转灰度很简单:Gray = R*0.299 + G*0.587 + B*0.114
但是假如一个字符代替一个像素点的话效果会很差,原因是分辨率太低了……
但是假如一个字符代替一个像素点的话效果会很差,原因是分辨率太低了……
15
文件夹内容C标准库里好像有,或你可以用boost::filesystem。
图像读取可以用freeimage库。
每个像素是红、绿、蓝三个通道。你可以简单地使用它们的平均值作为亮度。
亮度到字符,你可以写一个全局的字符数组变量,下标作为亮度,值是对应的字符。
10
提醒:
◆将控制台的字体尽量改小例如8
◆将控制台的行数和列数尽量设大例如640列×480行
◆chcp 437使用纯英文代码页
◆使用ASCII码\x20\xB0\xB1\xB2\xDB
◆将控制台的字体尽量改小例如8
◆将控制台的行数和列数尽量设大例如640列×480行
◆chcp 437使用纯英文代码页
◆使用ASCII码\x20\xB0\xB1\xB2\xDB
10
开始、运行、cmd
在弹出的cmd窗口中输入
chcp 437
使用纯英文代码页
然后
按空格键,再松开空格键;
按住Alt键不放,依次按小键盘上的数字1、7、6,再松开Alt键;
按住Alt键不放,依次按小键盘上的数字1、7、7,再松开Alt键;
按住Alt键不放,依次按小键盘上的数字1、7、8,再松开Alt键;
按住Alt键不放,依次按小键盘上的数字2、1、9,再松开Alt键。
看看显示啥。
在弹出的cmd窗口中输入
chcp 437
使用纯英文代码页
然后
按空格键,再松开空格键;
按住Alt键不放,依次按小键盘上的数字1、7、6,再松开Alt键;
按住Alt键不放,依次按小键盘上的数字1、7、7,再松开Alt键;
按住Alt键不放,依次按小键盘上的数字1、7、8,再松开Alt键;
按住Alt键不放,依次按小键盘上的数字2、1、9,再松开Alt键。
看看显示啥。
10
不是
控制台下的字符256个能显示的更少
即使把位图转换成16位灰度图也有256个色值
莫非转成8位灰度图?
感觉不现实“M”,”N”,”H”,”Q”,”$”,”O”,”C”,”?”,”7″,”>”,”!”,”:”, “-” , “;” , “.” , ” “,考虑到展示的是简单的位图(像素在100*100以内,颜色不用那么复杂,相似卡通画的就行),所以这几个字符貌似够了
不是像素的问题 是色值的问题 8位灰度图也还是332的rgb值 r值3位8种色值 b值2种4种色值
所以即使是8位灰度图也有2的8次方 即256个色值
莫非你要做成4位位图 16个色值?
50
1.首先确认字体大小,例如m*n像素大小的字体。
2.对全部字符像素作分析,生成”字符->亮度”映射表。即根据每个字符的”有墨面积/无墨面积”得到一个亮度值。
3.把整个bmp分成连续排列的多个m*n大小的块,并根据RGB值获取亮度,或一个像素对应一个字符也可以,不过那样图片会变得很大。
4.根椐亮度得到字符排列。
至于bmp文件的解析,那个简单,看文档吧。
修改字符亮度映射表可以更改显示效果。
2.对全部字符像素作分析,生成”字符->亮度”映射表。即根据每个字符的”有墨面积/无墨面积”得到一个亮度值。
3.把整个bmp分成连续排列的多个m*n大小的块,并根据RGB值获取亮度,或一个像素对应一个字符也可以,不过那样图片会变得很大。
4.根椐亮度得到字符排列。
至于bmp文件的解析,那个简单,看文档吧。
修改字符亮度映射表可以更改显示效果。