-
大小: 8.56MB文件類型: .zip金幣: 2下載: 0 次發布日期: 2023-11-03
- 語言: C/C++
- 標簽:
資源簡介
C++代碼實現24位無調色板BMP圖像的平移、旋轉、鏡像、錯切和縮放等操作。
在命令行用g++編譯即可運行,具體請看目錄下的README

代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?
#include?
#include?
using?namespace?std;
typedef?unsigned?char?BYTE;
typedef?unsigned?short?WORD;
typedef?unsigned?int?DWORD;
//位圖文件頭定義;
typedef?struct??tagBITMAPFILEHEADER{
// WORD?bfType;//單獨讀取,結構體中就不定義了
DWORD?bfSize;//文件大小
WORD?bfReserved1;//保留字
WORD?bfReserved2;//保留字
DWORD?bfOffBits;//從文件頭到實際位圖數據的偏移字節數
}BITMAPFILEHEADER;
typedef?struct?tagBITMAPINFOHEADER{
DWORD?biSize;//信息頭大小
DWORD?biWidth;//圖像寬度
DWORD?biHeight;//圖像高度
WORD?biPlanes;//位平面數,必須為1
WORD?biBitCount;//每像素位數
DWORD??biCompression;?//壓縮類型
DWORD??biSizeImage;?//壓縮圖像大小字節數
DWORD??biXPelsPerMeter;?//水平分辨率
DWORD??biYPelsPerMeter;?//垂直分辨率
DWORD??biClrUsed;?//位圖實際用到的色彩數
DWORD??biClrImportant;?//本位圖中重要的色彩數
}BITMAPINFOHEADER;?//位圖信息頭定義
//像素信息
typedef?struct?tagIMAGEDATA
{
BYTE?blue;
BYTE?green;
BYTE?red;
}DATA;
BITMAPFILEHEADER?strHead;
BITMAPINFOHEADER?strInfo;
int?hwsize;
int?mWmSize;
int?cxcy;
WORD?bfType;
void?translation(const?DATA*?src?int?x?int?y);
void?rotation(const?DATA*?src?double?angle);
void?scale(const?DATA*?src?float?x?float?y);
void?shear(const?DATA*?src?double?angle?char?axis);
void?mirror(const?DATA*?src?char?axis);
void?printImage(const?DATA*?src?string?filename?int?size);
int?main(){
FILE?*fpi;
fpi=fopen(“input.bmp““rb“);
if(fpi?!=?NULL){
//先讀取文件類型
fread(&bfType1sizeof(WORD)fpi);
if(0x4d42!=bfType)?{
cout<<“Error:?The?file?is?not?a?bmp?image!“< return?0;
}
//讀取bmp文件的文件頭和信息頭
fread(&strHead1sizeof(tagBITMAPFILEHEADER)fpi);
fread(&strInfo1sizeof(tagBITMAPINFOHEADER)fpi);
??????? h=strInfo.biHeight;
??????? w=strInfo.biWidth;
??????? if(w?%?4?==?0)
??????? mW?=?w;
??????? else
??????? mW?=?(w/4+1)*4;
??????? //?if(h*mW*3!=strInfo.biSizeImage){
??????? //? cout<<“Error:?image?broken!“< ??????? //? return?0;
??????? //?}
??????? size=strInfo.biSizeImage/3;
??????? //?cout<<“h:?“< ??????? //?cout<<“w:?“< ??????? //?cout<<“size:?“< ??????? //?cout<<“h*w*3:?“< ??????? //?cout<<“bfsize:?“<
????????DATA?*imgdata=new?DATA[size];
fread(imgdata1sizeof(DATA)*sizefpi); //讀取bmp數據信息
fclose(fpi);
cx?=?mW?/?2;
cy?=?h?/?2;
int?xy;
cout<<“Translation?input?the?X(0 cin>>x;
cout<<“Translation?input?the?Y(0 cin>>y;
translation(imgdata?x?y); //perform?the?translation
char?axis;
cout<<“Mirror?according?to?X?axis?or?Y?axis??(x?or?y):?“;
cin>>axis;
mirror(imgdata?axis);
float?mulXmulY;
cout<<“Scale?input?the?x?coefficient?(0.1 cin>>mulX;
cout<<“Scale?input?the?y?coefficient?(0.1 cin>>mulY;
scale(imgdata?mulX?mulY);
double?theta;
cout<<“Rotation?input?the?angle?to?be?rotate?(0? cin>>theta;
theta?=?theta?/?180?*?3.14159;
rotation(imgdata?theta);
cout<<“Shear?according?to?X?axis?or?Y?axis??(x?or?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2015-12-13?15:33??image_process\
?????文件????????6148??2015-12-13?15:30??image_process\.DS_Store
?????目錄???????????0??2015-12-13?15:33??__MACOSX\
?????目錄???????????0??2015-12-13?15:33??__MACOSX\image_process\
?????文件?????????120??2015-12-13?15:30??__MACOSX\image_process\._.DS_Store
?????文件?????1920054??2015-12-02?20:59??image_process\input.bmp
?????文件?????????464??2015-12-02?20:59??__MACOSX\image_process\._input.bmp
?????文件???????16479??2015-12-05?15:44??image_process\main.cpp
?????文件?????1920054??2015-12-06?14:17??image_process\mirror.bmp
?????文件?????????177??2015-12-06?14:17??__MACOSX\image_process\._mirror.bmp
?????文件?????????454??2015-12-13?15:33??image_process\README.txt
?????文件?????3861318??2015-12-06?14:17??image_process\rotation.bmp
?????文件?????????177??2015-12-06?14:17??__MACOSX\image_process\._rotation.bmp
?????文件?????7680054??2015-12-06?14:17??image_process\scale.bmp
?????文件?????????177??2015-12-06?14:17??__MACOSX\image_process\._scale.bmp
?????文件?????3033654??2015-12-06?14:17??image_process\shear.bmp
?????文件?????????177??2015-12-06?14:17??__MACOSX\image_process\._shear.bmp
?????文件?????2700054??2015-12-06?14:17??image_process\translation.bmp
?????文件?????????177??2015-12-06?14:17??__MACOSX\image_process\._translation.bmp
- 上一篇:MFC程序100例.zip
- 下一篇:C++檢測托盤圖標和枚舉進程2免費
評論
共有 條評論