求用C++编一个程序,能在控制台上通过字符显示同文件夹下的.bmp位图每一个像素点

想在vs2012环境下编程,注意是通过字符模式来显示图片,不是切换到图形模式或者使用窗体程序,要求能够浏览同一个文件夹下所有的图片,而不是只能用输入名字的方式浏览。思路如... 想在vs2012环境下编程,注意是通过字符模式来显示图片,不是切换到图形模式或者使用窗体程序,要求能够浏览同一个文件夹下所有的图片,而不是只能用输入名字的方式浏览。
思路如下:
1.先要得到文件夹下所有的.bmp图片文件名称,(dir *.bmp>1.txt),先生成一个txt文件,再将txt文件中的位图名提取出来。
2.利用24位位图图像的存储原理(每个像素用三个字节表示,分别是绿,红,蓝三色的值,文件头+像素数据)。
3.位图中像素信息的获得。
4.近似色彩的表示(用SetConsoleTextAttribute函数)。
5.彩色到灰度图像的转换。
6.灰度与字符的对应关系。
实在不想做的话写个详细的思路也好啊~~求大神
展开
 我来答
匿名用户
2013-12-17
展开全部
//读取文件的函数
int readBmp(char *bmpName)
{
FILE *fp=fopen(bmpName,"rb");//fp指向文件的开头

if(fp==NULL)
{
return 0;
}
else
{
fseek(fp, sizeof(BITMAPFILEHEADER),0); //以0为基准,偏移文件头个字节,fp指向此处,即信息头

BITMAPINFOHEADER head; //定义信息头结构变量

fread(&head, sizeof(BITMAPINFOHEADER), 1,fp); //head指向读取出的信息头

bmpWidth = head.biWidth; //图像的宽度

bmpHeight = head.biHeight; //图像的高度

biBitCount = head.biBitCount; //每像素的位数

int lineByte=(bmpWidth * biBitCount/8+3)/4*4;//定义变量,计算图像每行像素所占的字节数(必须是4的倍数)

//申请位图数据所需要的空间,读位图数据进内存
pBmpBuf=new char[lineByte * bmpHeight]; //图象数据指针,pBmpBuf指向实际的图象数据

fread(pBmpBuf,1,lineByte * bmpHeight,fp);

fclose(fp);//关闭文件

return 1;//读取文件成功
}
}
南瓜猪的的的
2013-12-05 · TA获得超过1297个赞
知道小有建树答主
回答量:1598
采纳率:0%
帮助的人:403万
展开全部
boost filesystem
boost gil
不要用windows api
追问
能说具体一点么。。我是初学者。
追答
有本书叫
boost程序库完全开发指南 你下载pdf格式 里面有对boost filesystem的详细介绍 文件路径这块应当够用了
至于bmp .... 其实bmp格式和txt格式实际上差不多 很容易转换的 随便百度一下就好了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
陌上繁花vc
2013-12-11
知道答主
回答量:1
采纳率:0%
帮助的人:1427
展开全部
楼主天大的吧 - -
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式