• 大小: 13.28MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-15
  • 语言: 其他
  • 标签: c++  

资源简介

bmp格式图片缩小,验证可用,vc2010下,不过并不清晰,要求更好的压缩,不建议用这个

资源截图

代码片段和文件信息

#include 
#include 
#define FXZOOMRATIO 0.5//x轴缩放倍数
#define FYZOOMRATIO 0.5//y轴缩放倍数
unsigned char* pBmpBuf;//读入图像数据的指针
unsigned char* pNewBmpBuf;
int bmpWidth;//图像的宽
int bmpHeight;//图像的高
RGBQUAD* pColorTable;//颜色表指针
int biBitCount;//图像类型,每像素位数
long newBmpWidth;//变化后图像的宽
long newBmpHeight;//变化后图像的高
long newLineByte;//变化后图像数据每行的字节数
/****************************************************************************
*函数名称:readBmp()
*函数参数:const char *bmpName 读入bmp格式文件的名称及路径
*函数返回值:0为失败 1为成功
*函数描述:给定文件的名称和路径 读入图像的位图数据,宽,高,及每个像素的位数进内存,保存在全局变量中
***************************************************************************/
bool readBmp(const char* bmpName)
{
FILE* fp=fopen(bmpName“rb“);
if(fp==0)
{
printf(“cannot open file“);
return 0;
}
fseek(fpsizeof(BITMAPFILEHEADER)0);
BITMAPINFOHEADER head;
fread(&headsizeof(BITMAPINFOHEADER)1fp);
bmpWidth = head.biWidth;
bmpHeight = head.biHeight;
biBitCount = head.biBitCount;
int lineByte = (bmpWidth *biBitCount/8+3)/4*4;//计算图像每行像素所占的字节数
if(biBitCount == 8)
{
pColorTable = new RGBQUAD[256];
fread(pColorTablesizeof(RGBQUAD)256fp);
}
pBmpBuf = new unsigned char [lineByte* bmpHeight];
fread(pBmpBuf1lineByte*bmpHeightfp);
fclose(fp);
return 1;
}
/****************************************************************************
*函数名称: saveBmp()
*函数参数: const char *bmpName    写入bmp格式文件的名称及路径
    unsigned char *imgBuf 待存盘的位图数据
    int width             以像素为单位待存盘的位图宽
    int height            以像素为单位待存盘的位图高
    int biBitCount        每个像素占的位数
    RGBQUAD *pColorTable   颜色表指针
*函数返回值:0为失败 1为成功
*函数描述:给定写入bmp文件的名称和路径 要写入图像的位图数据,宽,高,写进文件中
***************************************************************************/
bool saveBmp(const char* bmpNameunsigned char* imgBufint widthint heightint biBitCountRGBQUAD* pColorTable)
{
if(!imgBuf)//imgBuf 待存盘的位图数据
return 0;
int colorTablesize = 0;
if(biBitCount == 8)
colorTablesize =1024;
int lineByte = (width * biBitCount/8+3)/4*4;
FILE *fp = fopen(bmpName“wb“);
if(fp == 0)
return 0;
BITMAPFILEHEADER fileHead;
fileHead.bfType= 0x4d42;
fileHead.bfSize = sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER) + colorTablesize + lineByte *height;
fileHead.bfReserved1 = 0;
fileHead.bfReserved2 = 0;
fileHead.bfOffBits = 54 +colorTablesize;
fwrite(&fileHeadsizeof(BITMAPFILEHEADER)1fp);
BITMAPINFOHEADER head;
head.biBitCount = biBitCount;
head.biClrImportant = 0;
head.biClrUsed = 0;
head.biCompression = 0;
head.biHeight = height;
head.biPlanes =1;
head.biSize = 40;
head.biSizeImage = lineByte *height;
head.biWidth = width;
head.biXPelsPerMeter = 0;
head.biYPelsPerMeter = 0;
fwrite(&headsizeof(BITMAPINFOHEADER)1fp);
if(biBitCount == 8)
fwrite(pColorTablesizeof(RGBQUAD)256fp);
fwrite(imgBufheight * lineByte1fp);
fclose(fp);
return 1;
}
/****************************************************************************
*函

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2015-08-27 14:37  Debug\
     文件       31744  2015-08-26 16:53  Debug\bmp_narrow.exe
     文件      328732  2015-08-26 16:53  Debug\bmp_narrow.ilk
     文件      445440  2015-08-26 16:53  Debug\bmp_narrow.pdb
     目录           0  2015-08-27 14:38  bmp_narrow\
     目录           0  2015-08-27 14:37  bmp_narrow\Debug\
     文件       12796  2015-08-26 16:53  bmp_narrow\Debug\CL.read.1.tlog
     文件         264  2015-08-26 16:53  bmp_narrow\Debug\CL.write.1.tlog
     文件         406  2015-08-26 16:53  bmp_narrow\Debug\bmp_narrow.exe.embed.manifest
     文件         472  2015-08-26 16:53  bmp_narrow\Debug\bmp_narrow.exe.embed.manifest.res
     文件         381  2015-08-26 16:53  bmp_narrow\Debug\bmp_narrow.exe.intermediate.manifest
     文件          41  2015-08-26 16:53  bmp_narrow\Debug\bmp_narrow.lastbuildstate
     文件        3595  2015-08-26 16:53  bmp_narrow\Debug\bmp_narrow.log
     文件       31014  2015-08-26 16:53  bmp_narrow\Debug\bmp_narrow.obj
     文件         210  2015-08-26 16:53  bmp_narrow\Debug\bmp_narrow_manifest.rc
     文件         610  2015-08-26 16:53  bmp_narrow\Debug\cl.command.1.tlog
     文件           2  2015-08-26 16:53  bmp_narrow\Debug\link-cvtres.read.1.tlog
     文件           2  2015-08-26 16:53  bmp_narrow\Debug\link-cvtres.write.1.tlog
     文件           2  2015-08-26 16:53  bmp_narrow\Debug\link.1764-cvtres.read.1.tlog
     文件           2  2015-08-26 16:53  bmp_narrow\Debug\link.1764-cvtres.write.1.tlog
     文件           2  2015-08-26 16:53  bmp_narrow\Debug\link.1764.read.1.tlog
     文件           2  2015-08-26 16:53  bmp_narrow\Debug\link.1764.write.1.tlog
     文件        1356  2015-08-26 16:53  bmp_narrow\Debug\link.command.1.tlog
     文件        2852  2015-08-26 16:53  bmp_narrow\Debug\link.read.1.tlog
     文件         582  2015-08-26 16:53  bmp_narrow\Debug\link.write.1.tlog
     文件         370  2015-08-26 16:53  bmp_narrow\Debug\mt.command.1.tlog
     文件         266  2015-08-26 16:53  bmp_narrow\Debug\mt.read.1.tlog
     文件         266  2015-08-26 16:53  bmp_narrow\Debug\mt.write.1.tlog
     文件         494  2015-08-26 16:53  bmp_narrow\Debug\rc.command.1.tlog
     文件         238  2015-08-26 16:53  bmp_narrow\Debug\rc.read.1.tlog
     文件         246  2015-08-26 16:53  bmp_narrow\Debug\rc.write.1.tlog
............此处省略13个文件信息

评论

共有 条评论