位图文件放缩算法[馋嘴][困][困]
#include
#include
#include
#include
#pragma pack(1)//防止编译器自动对齐
//定义bmp起始部分
typedef struct WTheader{//位图文件头(用于识别位图文件)
unsigned short bfType;//保存图片类型,标志该文件是位图文件
unsigned long bfSize;//位图文件的大小
unsigned short bfReserved1; //位图文件保留字,必须为0(7-8字节)
unsigned short bfReserved2;// 位图文件保留字,必须为0(9-10字节)
unsigned long bfoffbits;//RGB数据偏移地址,位图数据的起始位置
}WTheader;
typedef struct XXheader{//位图信息头(简化)

unsigned long biSize;//该结构的字节数
unsigned long biWidth;//以像素为单位的图像宽度
unsigned long biHeight;// 以像素为单位的图像长度
unsigned short biPlanes;//目标设备级别,必须为1
unsigned short biBitcount;//每个像素所需的位数,必须是1

unsigned long biSizeImage;//以字节为单位的图像数据的大小

unsigned long biXPelsPerMeter;//位图水平分辨率,每米像素数
unsigned long biYPelsPerMeter;//位图垂直分辨率,每米像素数
unsigned long biClrUsed;//位图实际使用的颜色表中的颜色数
unsigned long biClrlmportant;//位图显示过程中重要的颜色数


}XXheader;
//图片放大缩小函数
void F(WTheader x1,XXheader x2,double t,char *file_x,char *file_y)
{
FILE *X,*Y;//创建文件变量X,Y分别储存原始文件和目标文件的信息
X=fopen(file_x,"rb");//以只读的形式打开原始文件
Y=fopen(file_y,"wb");//以二进制形式进行读写的形式打开目标文件
if(X==NULL||Y==NULL){

printf("打开失败\n");

return ;
}//判断文件是否为空
fread(&x1,sizeof(WTheader),1,X);//用x1接收X中存储的原始文件的位图文件头
fread(&x2,sizeof(XXheader),1,X);//用x2接收X中存储的原始文件的位图信息头
unsigned int xw=x2.biWidth;
printf("原图片的宽:%d\n",xw);//读取原始图像宽度并打印
unsigned int xh=x2.biHeight;
printf("原图片的高:%d\n",xh);//读取原始图像高度并打印
unsigned char* x_pixels=(unsigned char*)malloc(xw*xh*3);//创建指针申请内存用于读入原始位图数据
fseek(X,54,SEEK_SET);//通过fseek函数进行定位,以读入所需的数据
fread(x_pixels,xw*xh*3,1,X);//将原始位图信息读入已申请的内存
unsigned int yw=(int)t*xw;
printf("新图片的宽:%d\n",(int)t*xw);//计算目标图像的图像宽度并打印
unsigned int yh=(int)t*xh;
printf("新图片的高:%d\n",(int)t*xh);//计算目标图像的图像高度并打印
x1.bfSize=yh*yw*3+54;//在x1中写入位图文件的大小
x2.biWidth=yw;//在x2中写入目标图像的图像宽度
x2.biHeight=yh;//在x2中写入目标图像的图像高度
fwrite(&x1,sizeof(WTheader),1,Y) ;// 把x1中数据写入Y
fread(&x2,sizeof(XXheader),1,Y);// 把x1中数据写入Y
int i=0,j=0;
unsigned long dwx,dwy;
unsigned char *puD;
unsigned char *puS;
unsigned char *y_pixels=(unsigned char *)malloc(yh*yw*3);
//通过for的双重循环循环拷贝字节数到目标文件
for(int i=0;i {
dwy=i*t;
puD=y_pixels+i*x2.biWidth*3;//完整的for循环存入的字节量
puS=x_pixels+dwy*x2.biWidth*3;//缩小/放大
for(int j=0;j {

//数据拷贝

dwx=j*t;

memcpy(puD+j*3,puS+ dwx*3,3);//复制字节到目标文件
}
}
fseek(Y,54,SEEK_SET);//通过fseek函数进行定位,以写入目标文件所需的数据
fwrite(y_pixels,yw*yh*3,1,Y);//写入目标文件所需的数据
printf("执行成功\n");
free(x_pixels);free(y_pixels);//释放内存
fclose(X);fclose(Y); //关闭打开的文件
}
//主程序
int main(int argc,char* argv[])
{
WTheader x1;XXheader x2;//创建结构体变量x1,x2分别储存位图文件头和位图信息头
double t=atof(argv[2])/100.0;//通过读取第二个行参数计算伸缩比例
memset(&x1,0,sizeof(WTheader));//把x1中置0
memset(&x2,0,sizeof(XXheader));//把x2中置0
printf("%f\n",t);//打印伸缩比例
F(x1,x2,t,argv[1],argv[3]);//通过读取第一个行参数和第三个行参数计算伸缩比例
return 0;
}

今天的小作文让我想起怜之前在fc上向粉丝介绍自己lost boy的mv剧本:
So we know, I made it a generalized character, so you could either relate to the character, or you can relate to us or the friends. Because you have to realize that, sometimes it's you maybe, sometimes I'm mad,  pushing everything away.
But the most important thing is, the people around you, no matter what you get it, accept them.
怜怜

Aš supjaustyti iki pusės, palaimintas į išvaizdą širdyje, Gu gydytojas yra penkių metrų atstumu, mano kryptimi, arba ploni pečiai, vaikščioti kaip katė nėra garso. Aš sn aplink mano riešo ir greitai bandė baigti darbą rankoje, bet skubėti, žievelės sumušė ... Dievas žino, kokia aš nuobodi išraiška. Jis priėjo prie manęs ir sustojo, žiūrėdamas tarp manęs ir žievelių ant žemės逡


发布     👍 0 举报 写留言 🖊   
✋热门推荐
  • 这语文课上的我现在很不好,别轻易惹我其实大家长期生活在高压的环境下,情绪有点小问题是正常哒~一定学会自我调节,要相信一切都会啊啊啊啊啊啊啊啊啊啊啊饿啊啊啊啊啊啊
  • 朋友圈文案|凉秋暮晚 日子温婉 人间浪漫 ²⁰²² ້໌ᮨ/₁₀.₀₈ ┆❀ᯓ1.人间十月有幸事,落叶与风再相逢2.秋天是个多愁善感容易抑郁的季节,树叶唰唰的落
  • 凤姐应该是看贾母喜欢,顺势凑趣儿;宝钗成熟理性;宝玉则是顾忌黛玉的感受,故使眼色与湘云,不过万万没想到的是,原本想要求全,却把两个人都得罪了!宝钗的博学,红楼中
  • 《男友说我得了抑郁症》的主人公就是其中一员,她毕业于国内TOP大学的中文系,研究生即将毕业的那一年,频繁地歇斯底里、无缘无故痛哭、经常性感觉难受、对生活失去一切
  • 经过半个月以来的自我调整,我发现也不过如此,是自己太过于较真,你也从未进入过我的内心,反而我始终相信能走到最后,自己形成了一种精神上的依赖像一个气球突然破了,我
  • ”能让这个小吃货连吃都不感兴趣了……这个时候我知道孩子心中的那个小我出来了,通过跟着老师学传统文化,还有这二个多月朗读《父母规》我明白了,这会我要做的是聆听孩子
  • 碎碎念又开始了,本以为安排的天衣无缝的计划,又被疫情打破了,本来打算十一月初就回老家安心准备考试的,但当时沧州因为疫情封城,不能回去,那就天天期盼着沧州赶紧解封
  • 住宅メーカーの担当者・磯辺(徳重聡)との打ち合わせに立ち会った小梅は、両親の間にある決定的な問題に気づいてしまう。ORICON NEWS木村拓哉、堂本剛と夢のコ
  • )【21】喝了空腹茶,疾病身上爬。(不勤劳,难以养生;心不静,难以养心。
  • 34年历史实体店,经得考验,多谢支持欧来欧去 www.goEUgo.com同系公司 www.gegEU.com#欧来欧去 #至活旅游 #欧美旅游 #goeugo
  • 站在大门内,左手位就为青龙,宜高喜动,宜有高大建筑,对事业发展会有帮助,但是忌讳距离太近,反而会有压制。就在曼联一线队出征富勒姆之前,滕哈赫专门在卡灵顿基地观看
  • ⽣活,就是应对现实微笑,就是越过障碍注视未来;⽣活,就是⽤⼼灵之剪,在⼈⽣之路上裁出叶绿的枝头;⽣活,就是应对困惑或⿊暗时,灵魂深处燃起⾖⼤却明亮且微笑的灯展。
  • 这次终于成功让他知道我住哪了[揣手]结果付款POS机坏了给营业员支付宝转的忙碌了一天的我终于可以回家等安装师傅了还有昨晚拍的大高个儿夕阳的尾巴锦州烧烤两只散步的
  • #实用英语表达# It seems the weather will be like this for the time being.似乎天气暂时就像这样了。I
  • 说他是文学家,但他写的基本上都是笔记;说他是哲学家,他又没有哲学论著;说他是个成功的人,但他一生清贫,无权无势;说他是个失败的人,但他在活着的时候就已拥有众多的
  • 举个小例子吧,在iPhone8刚刚上市的时候,办公室里不少人都已经换上了新手机,而小柳也蠢蠢欲动,想要尝试一下。做事从来都是风风火火的大李,换手机也相当干脆利落
  • 由此说明,加盟连锁店不管是以上哪种经营方式进行合作,都是以总部出品牌为基础的前提下,除了投资外,总部还会以公司的品牌、技术及管理抽取餐饮分店的部分利润。它的优点
  • 1️⃣卖照片版权这种是风光摄影爱好者最大途径的获取收入的方式1)卖给个人单张图片可卖到4位数甚至更高2)国内杂志一般单张图片100-500元3)更直观是通过图片
  • 从本质上讲,在怀孕期间感染COVID-19的母亲所生的婴儿的大脑发育与子宫内未接触COVID的婴儿相比,其大脑发育不同的风险更高。此外,巴塞罗那大学心理健康研究
  • [青春有你]早上好现在是北京时间9:08晚安,我的月光在倾斜而下的银河里漫溯你是夜幕低垂下浮动的涟漪随着浮动的波光为我铺开金黄色的路我的月光啊,你是否知道那深海