一、运行环境介绍
Linux系统: Redhat6.3 (32位)
gcc 版本 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC)
二、功能介绍
打开一张BMP图片,读取RGB源数据进行缩放再生成新的BMP图片。
三、核心代码
由于处理的是BMP图片数据,传入的缩放后的图片宽度需要是4的倍数.
#include
#include
#include
int PicZoom(unsigned char *s_buff,unsigned int s_width,unsigned int s_height,unsigned char *buff,unsigned int width,unsigned int height);
void *my_memcpy(void *v_dst,const void *v_src,unsigned char c);
#pragma pack(1) /* 必须在结构体定义之前使用,这是为了让结构体中各成员按1字节对齐 */
/*需要文件信息头:14个字节 */
struct BITMAPFILEHEADER
{
unsigned short bfType; //保存图片类似。 'BM'
unsigned long bfSize; //图片的大小
unsigned short bfReserved1;
unsigned short bfReserved2;
unsigned long bfOffBits; //RGB数据偏移地址
};
/* 位图信息头 */
struct BITMAPINFOHEADER { /* bmih */
unsigned long biSize; //结构体大小
unsigned long biWidth;//宽度
unsigned long biHeight;//高度
unsigned short biPlanes;
unsigned short biBitCount;//颜色位数
unsigned long biCompression;
unsigned long biSizeImage;
unsigned long biXPelsPerMeter;
unsigned long biYPelsPerMeter;
unsigned long biClrUsed;
unsigned long biClrImportant;
};
/*
图片放大与缩小示例
*/
int main(int argc,char *argv[])
{