仅对8位,24位图像进行灰度处理
来源:互联网 发布:数控折弯机如何编程 编辑:程序博客网 时间:2024/04/25 20:55
//仅对8位,24位图像进行灰度处理
void CDib::Gray()
{
long linebits;
unsigned char bitCount=GetBitCount();//在此得到位数
if(bitCount==24)
{
//计算相应的 8 位图大小
unsigned long dwFileSize = sizeof(BITMAPFILEHEADER) + m_pBitmapInfoHeader->biSize
+ 256 * sizeof(RGBQUAD) + WIDTHBYTES(m_nWidth*8) * m_nHeight;
//写 BITMAPFILEHEADER
BITMAPFILEHEADER bfh;
memcpy(&bfh,m_pBitmapFileHeader,sizeof(BITMAPFILEHEADER));
bfh.bfOffBits = sizeof(BITMAPFILEHEADER) + m_pBitmapInfoHeader->biSize
+ 256 * sizeof(RGBQUAD);
bfh.bfSize = dwFileSize;
m_fileLeng = dwFileSize;
//写 BITMAPINFOHEADER
BITMAPINFOHEADER bih;
memcpy(&bih,m_pBitmapInfoHeader,m_pBitmapInfoHeader->biSize);
bih.biBitCount = 8;
bih.biSizeImage = (unsigned long)WIDTHBYTES(m_nWidth*8) * (unsigned long)m_nHeight;
bih.biClrUsed = 256;
//写 RGBQUAD
RGBQUAD rgbq[256];
for(int i=0;i<256;i++)
{
rgbq[i].rgbRed=i;
rgbq[i].rgbGreen=i;
rgbq[i].rgbBlue=i;
rgbq[i].rgbReserved=0;
}
//写位图数据
unsigned char* pData = new unsigned char[bih.biSizeImage];
long lw=WIDTHBYTES(m_nWidth*24);
linebits = WIDTHBYTES(m_nWidth*8);
for(long j=0l;j<m_nHeight;j++)
{
for(long i=0l;i<m_nWidth;i++)
{
long jj=j*lw;
long ii=3*i;
unsigned char gray = (unsigned char)(0.299*(m_pDibData[jj+ii])+
0.587*(m_pDibData[jj+ii+1])+0.114*(m_pDibData[jj+ii+2])+0.5);
pData[j*linebits+i] = gray;
}
}
//重新申请内存文件
if( m_pFileData != NULL )
delete [] m_pFileData;
m_pFileData = new BYTE [m_fileLeng];//这个是新的bmp的文件指针啊。
memcpy(m_pFileData,&bfh,sizeof(BITMAPFILEHEADER) );//fileheader
memcpy(m_pFileData+sizeof(BITMAPFILEHEADER),&bih,sizeof(BITMAPINFOHEADER) );//infoheader
memcpy(m_pFileData+54,rgbq,256*sizeof(RGBQUAD) );//rgbquad
memcpy(m_pFileData+1078,pData,bih.biSizeImage);//象素信息
}
}
- 仅对8位,24位图像进行灰度处理
- 24位位图转成8位灰度位图
- c# 24位图像转8位灰度图像(数组方式)
- 24位真色位图转化为8位灰度位图
- 24位位图转8位灰度图
- 24位真彩色位图和8位灰度位图相互转换(C语言实现)
- 24位位图转化为灰度图
- bmp位图文件:读取、写入、24位真彩转8位灰度、灰度图的二值化
- 【数字图像】C++8位和24位BMP位图的平滑、锐化、二值化处理,以及24位真彩图的灰度化
- C++8位和24位bmp位图平滑、锐化和二值处理,24位真彩图的灰度化
- 类似于AlphaBlend,对24位位图进行透明混合
- 开发灰度位图处理
- 8位与24位图像的相互转换
- 24位转8位位图,不是灰度,有颜色的,尽量减少失真
- 24位真彩色位图转换成8位灰度图片的代码实现
- 完整24位真彩色位图灰度化源代码
- 完整24位真彩色位图灰度化源代码
- 完整24位真彩色位图灰度化源代码
- 在vs.net 2003中编译ns2(5):编译ns2
- JS应用(资料很全)
- 完全无法集中精力
- 矢量图形技术
- 理解Asp.net中的View state
- 仅对8位,24位图像进行灰度处理
- 数据结构(线性表)
- 很旧以前都申请了这个 BOLG但是一直懒得写东西 看到周围的朋友都有BOLG了 从今天开始我会逐渐往里面添加文章的 请朋友们支持我
- 文明3_PTW玩转世界_C3C征服_[新手终极指南]
- MFC学习点滴二:MFC中的菜单路由
- ArcIMS基本语法
- 什么是托管
- IIS访问ASP页面时报错The requested resource is in use.的解决方法
- eXtremeComponents 的最后一页