BMP图片加马赛克C语言C++超简单
生活随笔
收集整理的這篇文章主要介紹了
BMP图片加马赛克C语言C++超简单
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
首先來看一下原圖與效果
原圖
效果圖
代碼如下`
cout<<"3.對圖像進行馬賽克處理:"<<endl;//定義原始圖像的寬和高 unsigned int Height = 0;unsigned int Width = 0;//定義循環(huán)變量 int i=0,newi=0;int j=0,newj=0;BITMAPFILEHEADER bmpfileheader; //文件頭BITMAPINFOHEADER bmpinfoheader; //信息頭//24位像素點RGB結(jié)構(gòu)體typedef struct tagRGB {BYTE blue;BYTE green;BYTE red;}RGBDATA; FILE *fpin; //讀取操作流FILE *fpout; //讀出操作流fpin=fopen("picture.bmp","rb");fread(&bmpfileheader,sizeof(BITMAPFILEHEADER),1,fpin);//讀取文件頭fread(&bmpinfoheader,sizeof(BITMAPINFOHEADER),1,fpin);//讀取信息頭Height=bmpinfoheader.biHeight;Width=bmpinfoheader.biWidth;//動態(tài)創(chuàng)建二維數(shù)組RGBDATA** RGBin; RGBin = (RGBDATA **)malloc(sizeof(RGBDATA*) * Height);for (i = 0; i < Height; i++) {RGBin[i] = (RGBDATA *)malloc(sizeof(RGBDATA) * Width);}//讀入像素信息for(i=0;i<Height;i++){fread(RGBin[i], sizeof(tagRGB), Width, fpin);}//動態(tài)創(chuàng)建二維數(shù)組RGBDATA** RGBout; RGBout = (RGBDATA **)malloc(sizeof(RGBDATA*) * Height);for (i = 0; i < Height; i++) {RGBout[i] = (RGBDATA *)malloc(sizeof(RGBDATA) * Width);}cout<<"請輸入馬賽克處理的塊的大小(0-512之間的整數(shù)):";int x;cin>>x;//進行馬賽克處理 for(i=0;i+x<Width;i+=x){for(j=0;j+x<Height;j+=x){for(newi=i;newi<i+x;newi++){for(newj=j;newj<j+x;newj++){//取每個塊的最下角的像素點 作為該馬賽克塊的所有的像素點 RGBout[newj][newi].blue = RGBin[j][i].blue;RGBout[newj][newi].green= RGBin[j][i].green;RGBout[newj][newi].red = RGBin[j][i].red;}}}} //將信息寫入文件fpout=fopen("03馬賽克處理輸出圖.bmp","wb");fwrite(&bmpfileheader,sizeof(BITMAPFILEHEADER),1,fpout);fwrite(&bmpinfoheader,sizeof(BITMAPINFOHEADER),1,fpout);for (i=0;i<Height;i++){fwrite(RGBout[i],sizeof(tagRGB),Width,fpout);}printf("對圖像進行馬賽克處理成功!\n");fclose(fpin);fclose(fpout);cout<<endl;總結(jié)
以上是生活随笔為你收集整理的BMP图片加马赛克C语言C++超简单的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 爱奇艺笔试题之成长值计算
- 下一篇: django基础入门之搭建博客系统