资源简介
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.em
文件 472 2015-08-26 16:53 bmp_narrow\Debug\bmp_narrow.exe.em
文件 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\li
文件 2 2015-08-26 16:53 bmp_narrow\Debug\li
文件 2 2015-08-26 16:53 bmp_narrow\Debug\li
文件 2 2015-08-26 16:53 bmp_narrow\Debug\li
文件 2 2015-08-26 16:53 bmp_narrow\Debug\li
文件 2 2015-08-26 16:53 bmp_narrow\Debug\li
文件 1356 2015-08-26 16:53 bmp_narrow\Debug\li
文件 2852 2015-08-26 16:53 bmp_narrow\Debug\li
文件 582 2015-08-26 16:53 bmp_narrow\Debug\li
文件 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个文件信息
相关资源
- 猫版马里奥VC工程源代码Visual Studio
- 基于MongoDB电子考试系统项目实践
- 计算机算法设计与分析第三版.pdf
- gsl-2.6.7z
- cplusplus.com 离线版 2016年5月8日
- OpenCV By Example (OpenCV3)
- 数据结构实用教程(第2版).pdf 主编
- Exe守护程序
- 海康相机SDK+QT二次开发.rar
- QtitanRibbon 4.8代码
- cmake-3.16.2-win32-x86.msi
- BCGControlBar 英文说明文档 28版本
- C+Primer+Plus++第6版++中文版_PDF电子书
- OpenGL开发的教室场景可以漫游
- 后台开发核心技术与应用实践高清P
-
AutoCAD ob
jectARX(VC)开发基础与教程 - [免费PDF高清]2018年最新编程珠玑(第
- Linux多线程服务端编程 - 陈硕高清完整
- vs2010串口发送接收程序
- Boost程序库探秘.pdf
- [免费]GB28181信令交互代码.rar
- 火狐NP插件开发
- vc运行库修复工具
- opencv4.0.1+contrib+vs2017编译x64x86完全版本
- 推箱子及其地图编辑器
- 精通Windows API-函数、接口、编程(源
- 获取屏幕上任意一点的RGB值
- 李建忠_设计模式源码和课件.rar
- Linux窗口程序设计-Qt4精彩分析 part02
- 蓝桥杯历年试题附完整测试数据和题
评论
共有 条评论