标准IO函数-将bmp图片修改为德国国旗样式

代码:
 

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <pthread.h>
#include <semaphore.h>
#include <wait.h>
#include <signal.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <semaphore.h>
#include <sys/msg.h>
#include <sys/shm.h>
#include <sys/un.h>
int main(int argc, const char *argv[])
{int size_bmp=0;int length_bmp=0;int hight_bmp=0;FILE* fp=fopen(argv[1],"r");fseek(fp,2,SEEK_SET);//偏移2,找到文件写入大小的位置;fread(&size_bmp,1,4,fp);fseek(fp,18,SEEK_SET);//找到文件写入图片宽度位置fread(&length_bmp,1,4,fp);//fseek(fp,22,SEEK_SET);fread(&hight_bmp,1,4,fp);//此时光标已经到23的位置,从该位置读取图片的高printf("%d\n%d\n%d\n",size_bmp,length_bmp,hight_bmp);fclose(fp);//像素点总数为length_bmp*hight_bmp=1330155//从54位后(不含54)是存放像素点的信息,所以像素点存放的总字节大小为size_bmp-54=3993120//则每个像素点的字节大小为像素总字节/像素点总数=3993120/1330155=3unsigned char red[3]={0,0,255};unsigned char yellow[3]={0,255,255};unsigned char black[3]={0,0,0};fp=fopen(argv[1],"r+");//防止第二次打开时把图片文件内容清空fseek(fp,54,SEEK_SET);//使光标指向像素点开始的位置int i;for(i=0;i<hight_bmp;i++){for(int j=0;j<length_bmp;j++){if(i<=(hight_bmp/3)){fwrite(yellow,3,1,fp);}else if(i>(hight_bmp/3) && i<=(hight_bmp*2/3)){fwrite(red,3,1,fp);}else{fwrite(black,3,1,fp);}}}fclose(fp);return 0; 
}

运行结果:
原图:

修改后:

思维导图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/7789.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue本地存储(cookie、sessionStorage,localStorage)

Vue本地存储&#xff08;cookie、sessionStorage&#xff0c;localStorage&#xff09; 简介 cookie&#xff1a;登录信息存储在cookie中&#xff0c;有过期时间&#xff0c;过期后即失效sessionStorage&#xff1a;存储在浏览器&#xff0c;浏览器关闭后失效localStorage&am…

怎么办理北京工作居住证

怎么办理北京工作居住证 来源 北京市工作居住证 ciicbj 1 外埠人员工作居住证续签 - 北京市政务服务网 banshi.beijing 2 北京工作居住证办理条件材料及流程 bj.bendibao 3 查看更多2 答案 根据搜索结果,办理北京工作居住证的主要流程如下: 申请条件 具有…

小组练习 : 结合本小组项目写下能想到的所有 SWOT

学生信息管理系统&#xff08;SIMS&#xff09;是设计用来管理学生数据的软件应用程序&#xff0c;包括成绩、考勤记录、个人资料等。对于这样一个系统&#xff0c;进行SWOT分析&#xff08;优势Strengths、劣势Weaknesses、机会Opportunities、威胁Threats&#xff09;可以帮助…

展开说说:Android线程池解析

何谓线程池&#xff1f;本人理解是存放和管理线程的一个容器。 线程池存在的意义是什么&#xff1f; 第一&#xff1a;前面博客提到过创建和销毁线程的操作本身是有性能开销的&#xff0c;如果把使用的线程对象存起来下次用的时候直接取出来用就省去了一次创建和销毁的成本&a…

linux高性能服务器-线程池实现

文章目录 定义应用场景任务类型线程数量数据结构设计&#xff1a;任务设计&#xff1a;队列设计&#xff1a;线程池设计 接口设计 定义 线程池属于生产消费模型&#xff0c;管理维持固定数量线程的池式结构&#xff0c;避免线程频繁的创建和销毁 应用场景 当一类任务耗时&am…

怎么处理人际关系?如何幸福一辈子?人类社会发展最终结局预测?

处理人际关系的方法有很多&#xff0c;以下是一些建议&#xff1a; 建立良好的沟通&#xff1a;学会倾听他人&#xff0c;表达自己的需求和感受&#xff0c;以及尊重他人的观点和意见。 建立良好的互动&#xff1a;培养友善和尊重他人的态度&#xff0c;学会与他人合作和共事。…

2005-2021年全国各地级市生态环境注意力/环保注意力数据(根据政府报告文本词频统计)

2005-2021年全国各地级市生态环境注意力/环保注意力数据&#xff08;根据政府报告文本词频统计&#xff09; 2005-2021年全国各地级市生态环境注意力/环保注意力数据&#xff08;根据政府报告文本词频统计&#xff09; 1、时间&#xff1a;2005-2021年 2、范围&#xff1a;2…

C语言栈的含义与栈数据操作代码详解!

引言&#xff1a;在本篇博客中&#xff0c;我们将学到数据结构——栈&#xff0c;讲到栈的含义与关于栈的数据操作代码。栈可以在顺序表、双向链表以及单链表的基础上实现&#xff0c;而于本篇博客中&#xff0c;我们选择在顺序表的基础上实现栈。 更多有关C语言和数据结构知识…

常用算法汇总

作者&#xff1a;指针不指南吗 专栏&#xff1a;算法篇 &#x1f43e;算法思维逻辑&#x1f43e; 文章目录 1.判断闰年2.计算从某天到某天的天数3.二分4. 前缀和5.差分6.图论6.1dfs6.2走迷宫 7.最短路7.1dijkstra7.2foly 8.并查集9.数论9.1gcd lcm9.2判断素数(质数)9.3分解质因…

Hutool工具对称加密的使用

1、导入pom依赖 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-crypto</artifactId><version>5.7.15</version> </dependency> 2、测试案例 import cn.hutool.crypto.Mode; import cn.hutool.crypto.Padding…

Linux设置脚本任意位置执行

记得备份 &#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 修改文件之后记得用 source 文件名 刷新 注意&#xff1a;刷新文件之后在当前窗口…

05-07 周二 Python使用并行程序取代串行加速运行,样例程序演示

简介 在进行FastBuild优化的时候&#xff0c;需要串行的获取需要的组件的特征&#xff0c;之前是串行进行的&#xff0c;但是由于之前的设计存在问题&#xff0c;因此&#xff0c;总是很低效&#xff0c;主要是如下的原因&#xff1a; 镜像需要先下载&#xff0c;然后检测运行环…

2024/5/7 QTday2

练习&#xff1a;优化登录框&#xff0c;输入完用户名和密码后&#xff0c;点击登录&#xff0c;判断账户是否为 Admin 密码 为123456&#xff0c;如果判断成功&#xff0c;则输出登录成功&#xff0c;并关闭整个登录界面&#xff0c;如果登录失败&#xff0c;则提示登录失败&a…

xhell + privoxy 手动http代理设置

xshell7 SSH -> 隧道 -> 添加 -> 类型:Dynamic(SOCKS4/5) 侦听端口:1080 privoxy https://www.privoxy.org/ 下载zip版本 解压到 E:\httpserver\privoxy_3.0.34 config.txt 中 添加 listen-address 0.0.0.0:8118 forward-socks5 / 127.0.0.1:1080 . windows11 …

Linux系统时间同步服务 ntpd 和 chrony

时间同步协议&#xff08;NTP&#xff09;&#xff0c;用于同步网络中计算机时钟的协议。它使用客户端-服务器或对等&#xff08;peer-to-peer&#xff09;体系结构&#xff0c;并使用层次化的、分层的多级系统&#xff0c;这些等级称为"stratum"。Stratum 0是精度最…

[CISCN2019 华北赛区 Day1 Web2]ikun

看到提示说一定要找到lv6 这要写脚本来爆破了&#xff0c;用bp是爆破不出来的 发现LV等级都是有参数挂着的 写个脚本看一下 import requests for i in range(1,1000):payload"http://node4.anna.nssctf.cn:28150/shop?page%d"%(i)resrequests.get(payload)if "…

【Unity】如何获得两个List各自的补集

【背景】 在项目中需要处理这样的逻辑,将所有活跃客户端的IP地址形成一个IP地址列表,与项目中已经生成按钮实例的IP按钮进行比照,如果某一个IP处于活跃状态,但是并未生成实例按钮,那么就生成实例。如果一个按钮的IP地址不存在于当前的IP地址列表中,则需要销毁这个Button…

Misc 流量分析

流量分析简介 网络流量分析是指捕捉网络中流动的数据包&#xff0c;并通过查看包内部数据以及进行相关的协议、流量分析、统计等来发现网络运行过程中出现的问题。 在CTF比赛中&#xff0c;以及各种技能大赛对于流量包的分析取证是一种十分重要的题型。通常这类题目都是会提供…

【工作记录】openjdk-22基础镜像的构建

背景 近期使用到的框架底层都用的是springboot3.0&#xff0c;要求jdk版本在17甚至更高。 于是决定制作一个基于openjdk22的基础镜像&#xff0c;本文对这一过程进行记录。 作为记录的同时也希望能够帮助到需要的朋友。 期望效果 容器内可以正常使用java相关命令且版本是2…

6.移除元素

文章目录 题目简介题目解答解法一&#xff1a;双指针代码&#xff1a;复杂度分析&#xff1a; 解法二&#xff1a;双指针优化代码&#xff1a;复杂度分析&#xff1a; 题目链接 大家好&#xff0c;我是晓星航。今天为大家带来的是 相关的讲解&#xff01;&#x1f600; 题目简…