求大佬看看在bmp截图中的错误 以下为截图
来源:互联网 发布:mac装win7加载驱动程序 编辑:程序博客网 时间:2024/05/16 07:00
#include<string.h>
#include<stdlib.h>
#include"z.h"
#pragma pack(1)
typedef struct tagBITMAPFILEHEADER
{
unsigned short bfType;
unsigned long bfSize;
unsigned short bfReserved1;
unsigned short bfReserved2;
unsigned long bfOffBits;
}BITMAPFILEHEADER;
typedef struct tagBITMAPINFOHEADER
{
unsigned long biSize;
unsigned long biWidth;
unsigned long biHeight;
unsigned short biPlanes;
unsigned short biBitCount;
unsigned long biComPression;
unsigned long biSizelmage;
unsigned long biXPelsPerMeter;
unsigned long biYPelsPerMeter;
unsigned long biClrUsed;
unsigned long biClrlmportant;
#include<stdlib.h>
#include"z.h"
#pragma pack(1)
typedef struct tagBITMAPFILEHEADER
{
unsigned short bfType;
unsigned long bfSize;
unsigned short bfReserved1;
unsigned short bfReserved2;
unsigned long bfOffBits;
}BITMAPFILEHEADER;
typedef struct tagBITMAPINFOHEADER
{
unsigned long biSize;
unsigned long biWidth;
unsigned long biHeight;
unsigned short biPlanes;
unsigned short biBitCount;
unsigned long biComPression;
unsigned long biSizelmage;
unsigned long biXPelsPerMeter;
unsigned long biYPelsPerMeter;
unsigned long biClrUsed;
unsigned long biClrlmportant;
}BITMAPINFOHEADER;
int main(int argc,char *argv[]){
FILE*fp=fopen(argv[1],"rb");
FILE*newfp=fopen(argv[2],"wb");
if(fp==NULL||newfp==NULL){
printf("fopen error!\n");
exit(1);
}
BITMAPFILEHEADER bithead;
BITMAPINFOHEADER bitinfo;
memset(&bithead,0,sizeof(BITMAPFILEHEADER));
memset(&bitinfo,0,sizeof(BITMAPINFOHEADER));
perror("memset");
fread(&bithead,1,sizeof(BITMAPFILEHEADER),fp);
fread(&bitinfo,1,sizeof(BITMAPINFOHEADER),fp);
perror("fread");
char*p=(char*)&bithead.bfType;
if(*p!='B'||*(p+1)!='M'){
printf("error!\n");
exit(1);
}
// fwrite(&bithead,1,sizeof(BITMAPFILEHEADER),newfp);
// fwrite(&bitinfo,1,sizeof(BITMAPINFOHEADER),newfp);
unsigned long x0=atoi(argv[3]);
unsigned long y0=atoi(argv[4]);
unsigned long x1=atoi(argv[5]);
unsigned long y1=atoi(argv[6]);
if(x0>500||y0>306||x1<x0||y1<y0){
printf("print error!\n");
exit(1);
}
BITMAPFILEHEADER bithead1;
BITMAPINFOHEADER bitinfo1;
memset(&bithead1,0,sizeof(BITMAPFILEHEADER));
memset(&bitinfo1,0,sizeof(BITMAPINFOHEADER));
char*sp=(char*)&bithead1.bfType;
*sp='B';
*(sp+1)='M';
perror("sp");
sleep(1);
bithead1.bfSize=(x1-x0)*(y1-y0)*3+54;
bithead1.bfOffBits=54;
bitinfo1.biSize=sizeof(BITMAPINFOHEADER);
bitinfo1.biWidth=x1-x0;
bitinfo1.biHeight=y1-y0;
memset(&bithead,0,sizeof(BITMAPFILEHEADER));
memset(&bitinfo,0,sizeof(BITMAPINFOHEADER));
perror("memset");
fread(&bithead,1,sizeof(BITMAPFILEHEADER),fp);
fread(&bitinfo,1,sizeof(BITMAPINFOHEADER),fp);
perror("fread");
char*p=(char*)&bithead.bfType;
if(*p!='B'||*(p+1)!='M'){
printf("error!\n");
exit(1);
}
// fwrite(&bithead,1,sizeof(BITMAPFILEHEADER),newfp);
// fwrite(&bitinfo,1,sizeof(BITMAPINFOHEADER),newfp);
unsigned long x0=atoi(argv[3]);
unsigned long y0=atoi(argv[4]);
unsigned long x1=atoi(argv[5]);
unsigned long y1=atoi(argv[6]);
if(x0>500||y0>306||x1<x0||y1<y0){
printf("print error!\n");
exit(1);
}
BITMAPFILEHEADER bithead1;
BITMAPINFOHEADER bitinfo1;
memset(&bithead1,0,sizeof(BITMAPFILEHEADER));
memset(&bitinfo1,0,sizeof(BITMAPINFOHEADER));
char*sp=(char*)&bithead1.bfType;
*sp='B';
*(sp+1)='M';
perror("sp");
sleep(1);
bithead1.bfSize=(x1-x0)*(y1-y0)*3+54;
bithead1.bfOffBits=54;
bitinfo1.biSize=sizeof(BITMAPINFOHEADER);
bitinfo1.biWidth=x1-x0;
bitinfo1.biHeight=y1-y0;
bitinfo1.biPlanes=1;
bitinfo1.biBitCount=24;
fwrite(&bithead1,1,sizeof(BITMAPFILEHEADER),newfp);
fwrite(&bitinfo1,1,sizeof(BITMAPINFOHEADER),newfp);
perror("fwrite");
sleep(1);
int x,y,color;
for(y=y0;y<y1;y++)
{
int cnt=(y-1)*bitinfo.biWidth*3+x0*3;
for(x=x0;x<x1;x++)
{
bitinfo1.biBitCount=24;
fwrite(&bithead1,1,sizeof(BITMAPFILEHEADER),newfp);
fwrite(&bitinfo1,1,sizeof(BITMAPINFOHEADER),newfp);
perror("fwrite");
sleep(1);
int x,y,color;
for(y=y0;y<y1;y++)
{
int cnt=(y-1)*bitinfo.biWidth*3+x0*3;
for(x=x0;x<x1;x++)
{
color=gImage_z[cnt]<<16|gImage_z[cnt+1]<<8|gImage_z[cnt+2]<<0; cnt+=3;
fwrite(&color,3,1,newfp);
perror("fwrite");
fwrite(&color,3,1,newfp);
perror("fwrite");
}
}
fclose(fp);
fclose(newfp);
}
阅读全文
0 0
- 求大佬看看在bmp截图中的错误 以下为截图
- VC屏幕截图,保存为Bmp文件
- VC屏幕截图,保存为Bmp文件
- Selenium在远程中的截图
- 将窗口截图存为Bmp的C++代码
- 将窗口截图存为Bmp的C++代码
- WinCE实现屏幕截图并保存为BMP文件
- VC屏幕截图并保存为bmp文件
- wince下全屏截图并保存为bmp格式
- VC++截取屏幕(截图)并存为bmp图片
- VC屏幕截图并保存为bmp文件
- 如何在extenreports添加错误的截图
- 截图
- 截图
- 截图
- 截图
- 截图
- 截图
- ORACLE的SQL JOIN方式小结
- javascript前端如何使用google-protobuf
- 基于概率论的分类方法:朴素贝叶斯
- linux matlab pathdef 的寻找与定义问题
- js实现跨域请求的若干方法
- 求大佬看看在bmp截图中的错误 以下为截图
- Xposed框架详解
- 关于python的基础知识3--功能组段
- redis发布与订阅机制
- 火狐Firefox怎么添加RESTClient组件
- 在openwrt板子上突然发现不能ping 域名,不能ping 外网IP,也无法ping其他电脑
- 利用maven工具解决jar包冲突问题或重复加载问题
- 拼多多2018校招内推编程-大整数相乘
- 有序矩阵查找