资源简介
封装的一个将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
相关资源
- 西门子224 226 CADcpu226CAD模版
- 基于S3C2410的实时时钟设计
- nrf24L01双向通信程序51单片机
- 嵌入式linux之mini2440的hc-sr04超声波驱动
- EEPROM 24c02中文资料
- 大气压强传感器BMP280单片机程序
- IIC总线读写AT24C02BEEPROM源程序 有详细
- 基于S3C2410的u-boot移植步骤
- S5720-32C-HI-24Szabbix监控交换机cpu、风扇
- 无线AP Ap1242
- 传智播客24期.net无加密赵剑宇
- msp430f5438a操作nrf24l01
- bmp格式图片转为rgb565格式图片
- 24C02存储显示计时时间
- ds2431驱动程序
- libmp3lame.so
- 2440 linux2.6下I2C驱动,编译通过
- STM32L053C8T6驱动240×240彩屏钟表显示时
- S3C2440详细代码.rar
- ucosii移植于s3c2410的源代码
- FM24CL04B Verilog 代码
- STM32 AD7124
- BMP文件转化为PGM文件格式
- 网吧方位图、室内平面布置图、拓朴
- 24to8Colors.zip
- 数字电路实验设计 全加器、8421转24
- 2.4G无线射频模块24L01的原理图和PCB图
- SMPTE 424M 标准
- STM32F103 NRF24L01无线通讯模块驱动例程
- 2019.4.24_CSDN博客导出工具.zip
评论
共有 条评论