当下软件园-绿色软件,免费软件下载,电脑软件下载,绿色软件下载网站
TAG标签| 网站地图| 设为首页| 加入收藏
当前位置:当下软件园 > 软件下载 > 编程开发 > 编程软件 >

BMP 24位图转16位位图的程序

类型:编程软件

语言:中文

更新:2025-04-30 12:41

大小:827KB

版本:绿色免费版

平台:WinXP

标签:24位图转16位

  • 软件介绍
  • 软件截图
  • 相关下载

24位BMP图片转565格式16位数组C文件代码,生成的代码用于嵌入式程序代码中图片文件显示,BMP图片以数组的形式保存并读取,将24位位图格式转换为16位位图格式的源码,包含RGB555格式和RGB565格式。

BMP位图32位转为24位深度

帮朋友做一个视频采集和基本处置功能,需要的是.bmp格式

几天下来,通过directshow进行视频采集,并抓去图片保存,根据需要进行业务处置,以前的处置程序是基于RGB24

而显示器是32位真彩色,后调整directshow 的grab filter,修改媒体种类,pmt-majortype = MEDIATYPE_Video;
pmt-subtype = MEDIASUBTYPE_RGB24; 结果在业务中成效不理想,为既保留32位图,也生成rgb24位图

硬是将BITMAPINFOHEADER *lpbi 中的值进行强行设置lpbi-biBitCount = 24;

结果是:产生的图片带有间断性的彩色条纹

然后再在Google、摆渡中继续游泳,没实质性进展

无奈,进Microsoftmsdn、gdi+...

下面的两天就是恶补BMP常识,发现彩色条纹应该是RGB32位颜色空间值,对于RGB32与RGB24,它们的像素点空间只差了一个字节,

继而,自行转换数据

第一是从directshow中获得图像数据

第二是,保留获得数据的文件头

然后是转换位图数据内容,并将内容另置空间

最后设定BITMAPFILEHEADER文件头,并写文件,

为备忘,具体达成如下:

TRY
{

BYTE *buffer = NULL;
hr = m_pWindowsLessControl-GetCurrentImage;//这里 m_pWindowsLessControl为IVMRWindowlessControl,进行图像抓取;
if )
{
return hr;
}

BITMAPFILEHEADER hdr;
BITMAPINFOHEADER *lpbi = buffer;

//颜色空间转换,假如为32位位图,转换为24
DWORD dwSize24 = 0;
DWORD dwSize32 = lpbi-biSizeImage;
dwSize24 = /4; //RGB32与RGB24的像素点空间差一个字节
BYTE* pImg24 = new BYTE[dwSize24]; //存放RGB24存储空间
BYTE* pImg24Temp = pImg24;//设定临时指针,后续进行数据管理
BYTE* pImg32 = buffer + sizeof;//跳过文件头,定位到数据部分
bool isSize24 = false;
if
{
isSize24 = true;
for
{
unsigned char r = *;
unsigned char g = *;
unsigned char b = *;
pImg32++;//跳过颜色空间alpha分量,达成转换
* = r;
* = g;
* = b; //赋值
}
//将指针指向新的控件

lpbi-biBitCount = 24;//强行指定
}

int nColors = 1 lpbi-biBitCount;//根据设定深度,进行颜色计算

if
nColors = 0;
hdr.bfType = | B); //指定BMP

//进行文件头设置
hdr.bfSize = sizeof + sizeof + nColors * sizeof + lpbi-biSizeImage;
hdr.bfReserved1 = 0;
hdr.bfReserved2 = 0;
hdr.bfOffBits = + lpbi-biSize + nColors * sizeof);

//进行位图写入
FILE *bmpFile = NULL;
bmpFile = fopenszFile, wb);//szFile为文件名
if
{
fwrite, bmpFile);//位图文件头
fwrite, bmpFile);//位图信息头

if
{
fwrite, 1, nColors * sizeof, bmpFile);//颜色表
fwrite+nColors * sizeof, 1, lpbi-biSizeImage, bmpFile);//位图数据
}
else
{
fwrite;
}

}
fclose;
CoTaskMemFree;//释放资源
delete pImg24Temp;
return hr;
}
CATCH
{

}
END_CATCH
}

折腾了两天,真费劲,特此记录一下备忘

TAG标签:24位图转16位(1)

转载请说明来源于当下软件园(https://www.gpsdan.com)

本文地址:https://www.gpsdan.com/soft/6290.html

郑重声明:文章来源于网络作为参考,本站仅用于分享不存储任何下载资源,如果网站中图片和文字侵犯了您的版权,请联系我们处理!邮箱3450399331@qq.com