«June 2019»
1
2345678
9101112131415
16171819202122
23242526272829
30


公告

本站技术贴除标明为“原创”的之外,其余均为网上转载,文中我会尽量保留原作者姓名,若有侵权请与我联系,我将第一时间做出修改。谢谢!

             ——既瑜


天气预报(南京)


我的分类(专题)

首页(183)
【趣味文摘】(22)
【五子连珠】(13)
【技术文档】(136)
【电脑技术】(6)
【疑难问题】(1)
【我的心情】(5)


最新日志
花语(中英文对照版)
各种花的花语
NTFS格式的7个精彩问答(pconli
童言无忌,有趣得一蹋
给MM修电脑的三个步骤[转载]
J2EE 面试题综合
JAVA编程规则
[转] P2P之UDP穿透NAT的原理与
[转]词法分析器
文件加密技术
一个让人发狂的PI求解C程序
[转]直线生成算法之DDA
[转]利用内核对象----互斥量实现应用
[转]如何正确的计算文件收发进度
双机调试VC程序
[转]分治法优化大整数乘法 C++实现
浮点数值的内存结构
[转]双链表实现大整数的加法与乘法[VC
拜占廷将军问题[转]
某人的挂QQ的程序源代码,虽然没用了,拿

最新回复
回复:vc中的CString的操作
回复:[转]分治法优化大整数乘法 C++
回复:[转]分治法优化大整数乘法 C++
回复:花语(中英文对照版)
回复:基本排序算法比较与选择[转载]
回复:c++中强制类型转换操作符小结
回复:c++中强制类型转换操作符小结
何必那么执着于是大头猫还是愤怒的小鸟,淡
回复:浮点数值的内存结构
回复:花语(中英文对照版)
回复:花语(中英文对照版)
回复:花语(中英文对照版)
回复:花语(中英文对照版)
回复:花语(中英文对照版)
回复:32位位图到24位位图的转换
dren, ages 16 and 20
回复:花语(中英文对照版)
回复:花语(中英文对照版)
回复:花语(中英文对照版)
回复:各种花的花语

留言板
签写新留言

不是0-1背包喔
桂花的花语``
谢谢
提议
提议

统计
blog名称:★既瑜★
日志总数:183
评论数量:636
留言数量:-25
访问次数:1339208
建立时间:2005年3月12日

链接


http://www.nju.edu.cn
http://bbs.nju.edu.cn 
http://www.t7-online.com
http://www.csdn.net
http://www.91f.net
http://www.crsky.com
我的MSN BLOG 

联系我

  OICQ:215768265
  njucs2001@hotmail.com
  erichoo1982@gmail.com

 

W3CHINA Blog首页    管理页面    写新日志    退出


[【技术文档】]32位位图到24位位图的转换
既瑜(224499) 发表于 2005-7-18 23:55:59

32位位图到24位位图的转换 (一)功能在图像处理的很多实际应用中,我们需要对图像的颜色表示进行转换(如,将32位颜色转换到24位颜色等等)。本文通过一个简单的例子,说明了32位颜色到24位颜色的转换过程。程序假设当前windows桌面颜色为32位颜色值。(一)功能在图像处理的很多实际应用中,我们需要对图像的颜色表示进行转换(如,将32位颜色转换到24位颜色等等)。本文通过一个简单的例子,说明了32位颜色到24位颜色的转换过程。程序假设当前windows桌面颜色为32位颜色值。 (二)准备工作建立VC CONSOLE APPLICATION,选择MFC SUPPORT (三)主函数函数Bmp32ToBmp24将32位位图转换到24位位图格式。注意:该函数假设当前windows桌面颜色为32位颜色值。 // transform 32-bit bitmap format to 24-bit bitmap format void Bmp32ToBmp24(char Filename[]){ char Filename2[] = "output.bmp";  //注意:如果没有LR_CREATEDIBSECTION,位图颜色将被映射到屏幕DC颜色 //也就是说,如果屏幕是16位颜色,则所有的图像都将映射到16位颜色 HBITMAP hbmp32 = (HBITMAP) LoadImage(NULL, Filename,   IMAGE_BITMAP, 0, 0,   LR_LOADFROMFILE |   LR_CREATEDIBSECTION);  BITMAP bmp;//获取位图信息 GetObject(hbmp32, sizeof(BITMAP), &bmp);  printf("Image Bit Depth : %d\nWidth : %d , Height : %d \n",   bmp.bmBitsPixel, bmp.bmWidth, bmp.bmHeight);//显示位图颜色模式和图像宽高  //计算24位图像每行的字节数 int BytesPerLine = 3 * bmp.bmWidth; while(BytesPerLine % 4 != 0)  BytesPerLine ++;  BITMAPINFOHEADER bih = {0};//位图信息头 bih.biBitCount = 24;//每个像素字节大小 bih.biCompression = BI_RGB; bih.biHeight = bmp.bmHeight;//高度 bih.biPlanes = 1; bih.biSize = sizeof(BITMAPINFOHEADER); bih.biSizeImage = BytesPerLine * bmp.bmHeight;//图像数据大小 bih.biWidth = bmp.bmWidth;//宽度  BITMAPFILEHEADER bfh = {0};//位图文件头 bfh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);//到位图数据的偏移量 bfh.bfSize = bfh.bfOffBits + bih.biSizeImage;//文件总的大小 bfh.bfType = (WORD)0x4d42;  FILE *fp = fopen(Filename2, "w+b");  fwrite(&bfh, 1, sizeof(BITMAPFILEHEADER), fp);//写入位图文件头  fwrite(&bih, 1, sizeof(BITMAPINFOHEADER), fp);//写入位图信息头  byte * p = new byte[bih.biSizeImage];  //获取当前32位图像数据 GetDIBits(GetDC(NULL), hbmp32, 0, bmp.bmHeight, p, (LPBITMAPINFO)&bih, DIB_RGB_COLORS);  //只取rgb值,存入文件 byte b = 0;//用于填充 for(int i = 0 ; i < bmp.bmWidth * bmp.bmHeight ; i ++) {  //32位位图图像的格式为:Blue, Green, Red, Alpha  fwrite(&(p[i * 3]), 1, 3, fp);  if(i % bmp.bmWidth == bmp.bmWidth - 1)//填充字节  {   for(int k = 0 ; k < (BytesPerLine - bmp.bmWidth * 3) ; k ++)    fwrite(&b, sizeof(byte), 1, fp);  } }  delete [] p;  fclose(fp);  DeleteObject(hbmp32);} (四)其它说明本程序被限制在了固定的屏幕格式,如果想要打破这个限制,必须从底层直接操作位图文件。(四)其它说明本程序被限制在了固定的屏幕格式,如果想要打破这个限制,必须从底层直接操作位图文件。本文引用通告地址: http://blog.csdn.net/hitjinming/services/trackbacks/428191.aspx

阅读全文(16506) | 回复(8) | 编辑 | 精华

回复:32位位图到24位位图的转换
 chen(游客)发表评论于2010-4-3 13:43:36

深圳好日子搬迁有限公司是经深圳运输局批准和国家工商注册的一家大型的正规搬迁运输公司。公司为方便广大市民就近搬迁,特在深圳各区镇开设有: 深圳龙岗搬家公司 深圳盐田搬家公司 深圳福田搬家公司 深圳罗湖搬家公司 深圳龙华搬家公司 深圳南山搬家公司 深圳宝安搬家公司 深圳空调回收

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除

回复:32位位图到24位位图的转换
ewa(游客)发表评论于2009-8-8 11:16:37

这儿有一个转化位图位深的程序不错, 推荐一下: http://hi.baidu.com/wudging/blog/item/7819fc00fbc62d19738b6551.html
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除

回复:32位位图到24位位图的转换
刘丹(游客)发表评论于2005-12-13 20:28:22

以下引用njucs在2005-12-9 14:07:52的评论: 16位转成32位? 我觉得转是可以的,但转出来应该没什么效果 那么请楼主说说您的大概思路?应该如何转?
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除

回复:32位位图到24位位图的转换
既瑜(224499)发表评论于2005-12-9 14:07:52

16位转成32位? 我觉得转是可以的,但转出来应该没什么效果
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除

回复:32位位图到24位位图的转换
刘丹(游客)发表评论于2005-12-9 10:25:57

我现在是逆操作,把16位的图转换成32位的图像信息,我个人认为这是不可行的,请问楼主,您认为可行么?
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除

回复:32位位图到24位位图的转换
既瑜(224499)发表评论于2005-11-24 13:13:33

测试了,没有任何问题,我这里运行出来是对的
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除

回复:32位位图到24位位图的转换
运用者(游客)发表评论于2005-11-21 18:04:03

希望作者能查查到底哪里出了问题, 等待回音.
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除

回复:32位位图到24位位图的转换
某某(游客)发表评论于2005-11-21 17:55:03

用不了 得到的是黑白图片,而且里面的数据也变了 所以看到的图片都不一样了.
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除

» 1 »

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)

站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.027 second(s), page refreshed 144279348 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号