四叉树有损位图压缩处理程序示例

前端技术 2023/09/02 C++

一个四叉树课设程序,可以对24位图进行压缩,应用于windows平台。

main.c

复制代码 代码如下:

#include \"bmp.h\"


int main()
{
BITMAPFILEHEADER fileHeader;
BITMAPINFOHEADER infoHeader;
FILE* pfin1 =fopen(\"test.bmp\",\"rb\");
FILE* pfout1 = fopen(\"test1.dat\" , \"wb\");
FILE* pfout2 = fopen(\"test2.bmp\" , \"wb\");
FILE* pfin2 =fopen(\"test1.dat\",\"rb\");
quadtree_t T=NULL;
//Read the Bitmap file header;
fread(&fileHeader,sizeof(BITMAPFILEHEADER),1,pfin1);
//Read the Bitmap info header;
fread(&infoHeader,sizeof(BITMAPINFOHEADER),1,pfin1);
//为简化代码,只处理24位彩色
if( infoHeader.biBitCount == 24 )
{
//int size = infoHeader.biWidth*infoHeader.biHeight;
int size = infoHeader.biWidth*infoHeader.biHeight;
RGB *img=NULL;
img=(RGB*)malloc(infoHeader.biHeight*infoHeader.biWidth*sizeof(RGB));
if(img!=NULL)
{
fread( img , sizeof(RGB) , size , pfin1 );
fwrite( &fileHeader , sizeof(fileHeader) , 1 , pfout1 );
fwrite( &infoHeader , sizeof(infoHeader) , 1 , pfout1 );
treediv(&T,0,infoHeader.biWidth-1,0,infoHeader.biHeight-1,pfout1,img,infoHeader.biWidth);
free(img);
//将修改后的图片保存到文件

fclose(pfin1);
fclose(pfout1);
}
//将图片解压后还原
openbmp(pfin2,pfout2);
fclose(pfin2);
fclose(pfout2);
}
return 0;
}

本文地址:https://www.stayed.cn/item/3421

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。