• 大小: 8.56MB
    文件类型: .zip
    金币: 1
    下载: 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 < theta < 360): “;
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

评论

共有 条评论

相关资源