资源简介
封装的一个将24BitCount 的bmp 转换为16bitCount 或8bitcount 或4Bitcount类。并保存。此接口只需要输入要转换图片的路径就可以获得转换后图片的bitmap。此接口在兼容各种平台

代码片段和文件信息
// BitTransform.cpp: implementation of the CBitTransform class.
//
//////////////////////////////////////////////////////////////////////
#include “stdafx.h“
#include “BitTrans.h“
#include “BitTransform.h“
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
#pragma pack(1)
typedef struct _BITMAPFILEHEADER{
WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
}_BITMAPFILEHEADER;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CBitTransform::CBitTransform()
{
}
CBitTransform::~CBitTransform()
{
}
BOOL CBitTransform::Bit24ToBit16(HBITMAP &hBitmapchar *szOldBmpNamechar *szNewBmpName)
{
int nPaletteSize =0;
bool bFileRead = false;
char *lpbuff = NULL;
BITMAPFILEHEADER* pBmpFileHeader = NULL;
BITMAPINFOHEADER* pBmpInfoHeader = NULL;
FILE* bitmapFile;
//CFileException fileException;
//if(!bitmapFile.Open(szOldBmpNameCFile::modeRead&fileException))
bitmapFile = fopen(szOldBmpName“r+b“);
if(bitmapFile == NULL)
{
TRACE(“Can‘t open file %s\n“szOldBmpName/*fileException.m_cause*/);
return false;
}
int bitmapfileheaderLen = sizeof(BITMAPFILEHEADER);
pBmpFileHeader=(BITMAPFILEHEADER*) new char [bitmapfileheaderLen];//给文件信息头分配内存
//bitmapFile.Read(pBmpFileHeaderbitmapfileheaderLen);//读入文件信息头信息
fread(pBmpFileHeaderbitmapfileheaderLen1bitmapFile);
int bitmapinfoheader = sizeof(BITMAPINFOHEADER);
pBmpInfoHeader=(BITMAPINFOHEADER*) new char [bitmapinfoheader];//给BMP信息头分配内存
//bitmapFile.Read(pBmpInfoHeaderbitmapinfoheader);
fread(pBmpInfoHeaderbitmapinfoheader1bitmapFile);
if(pBmpFileHeader->bfType!=0x4D42)//判断文件是不是位图文件
{
TRACE((“This is not a bitmap file!“));
bFileRead=FALSE;
//bitmapFile.Close();
fclose(bitmapFile);
delete []pBmpFileHeader;
delete []pBmpInfoHeader;
return false;
}
if(pBmpInfoHeader->biCompression!=0)//判断图像是不是压缩的
{
AfxMessageBox(“This system only support Un-compression!!“);
fclose(bitmapFile);
delete []pBmpFileHeader;
delete []pBmpInfoHeader;
return false;
}
DWORD dwbmp;
switch(pBmpInfoHeader->biBitCount)//判断颜色的位数
{
case 1:
nPaletteSize=2;
break;
case 4:
nPaletteSize=16;
break;
case 8:
nPaletteSize=256;
break;
case 24:
nPaletteSize=0;//当为真彩色时没有颜色表,所以为0
dwbmp = (pBmpInfoHeader->biWidth*24+31)/32*4*pBmpInfoHeader->biHeight;
lpbuff = new char[dwbmp];
//bitmapFile.Seek(bitmapfileheaderLen+bitmapinfoheaderSEEK_SET);
//bitmapFile.Read(lpbuffdwbmp);
fread(lpbuffdwbmp1bitmapFile);
Bit24ToBit16Ex(hBitmap16pBmpInfoHeader->biWidthpBmpInfoHeader->biHeight(char*)lpbuffszNewBmpName);
break;
default:
TRACE(“This color is not valid!“);
}
delete []pBm
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 7542 2010-09-12 21:38 BitTransform\BitTransform.cpp
文件 1128 2010-09-12 23:28 BitTransform\BitTransform.h
目录 0 2010-09-14 22:03 BitTransform
----------- --------- ---------- ----- ----
8670 3
相关资源
- EPSON XP225 xp235 xp245打印机清零软件+教
- I2C读写AT24C02 基于STM32F103 cube116540
- 基于蓝牙4.0的设备通信方案设计与实
- porting.RTEMS移植指南.双语.V20131224.pdf
- TCL-S1916 ,1924交换机管理程序
- 飞思卡尔单片机MC9S12XS12G128驱动(硬件
- NRF24L01实现51与STM32双向通讯
- 分页 24款样式页脚代码.rar
- CAD LISP24个源代码
- proteus_24C08—有注释(proteus里面使用的
-
安装 .net fr
amework 4.0失败原因是KB9 - 2410的led测试程序keil可以用
- 2440 cs8900a 网卡驱动程序
- 如何实现bmp位图透明贴图
- bmp文件读出为txt文件 txt文件写入为
- 大气科学常用FORTRAN程序
- bmp2c
- BmpButton
- 蓝牙驱动补丁IVT.BlueSoleil.6.4.240.2.Cra
- 托利多电子秤ind245协议读取串口数据
- IIC proteus仿真实验
- nRF24L01无线模块在单片机与FPGA上的应
- STM32F103C8T6+NRF24l01无线通信
- EESkill NRF24L01 无线模块用户手册
- 基于nRF24L01的射频收发电路原理图
- nRF24L01无线模块原理图和与5V单片机的
- 基于AVR的NRF24L01跳频通信程序
- 毕索龙bixolon 2478bsc打印机驱动 v4.6.6
- 2246en开卡汉化版工具
- axure后台管理系统原型rp112482
评论
共有 条评论