日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

BMP图片加马赛克C语言C++超简单

發布時間:2024/1/8 c/c++ 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BMP图片加马赛克C语言C++超简单 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先來看一下原圖與效果

原圖

效果圖

代碼如下`

cout<<"3.對圖像進行馬賽克處理:"<<endl;//定義原始圖像的寬和高 unsigned int Height = 0;unsigned int Width = 0;//定義循環變量 int i=0,newi=0;int j=0,newj=0;BITMAPFILEHEADER bmpfileheader; //文件頭BITMAPINFOHEADER bmpinfoheader; //信息頭//24位像素點RGB結構體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;//動態創建二維數組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);}//動態創建二維數組RGBDATA** RGBout; RGBout = (RGBDATA **)malloc(sizeof(RGBDATA*) * Height);for (i = 0; i < Height; i++) {RGBout[i] = (RGBDATA *)malloc(sizeof(RGBDATA) * Width);}cout<<"請輸入馬賽克處理的塊的大小(0-512之間的整數):";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;

總結

以上是生活随笔為你收集整理的BMP图片加马赛克C语言C++超简单的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。