嵌入式3-29

今日作业:用fwrite 和 fseek功能,将一张bmp格式的图片更改成 德国国旗
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
typedef unsigned char bgr[3];
int main(int argc, const char *argv[])
{
    FILE* fp = fopen("./photo.bmp","r");
    fseek(fp,2,SEEK_SET); 
    int bmp_size = 0;
    fread(&bmp_size,4,1,fp);
    printf("图片大小为:%d\nkb",bmp_size);
    int bmp_w = 0;
    int bmp_h = 0;
//从头往后偏移18个字节,定位存储宽度的的内存上
    fseek(fp,18,SEEK_SET);
    fread(&bmp_w,4,1,fp);
    fread(&bmp_h,4,1,fp);
    printf("图像分辨率为:%d*%d\n",bmp_w,bmp_h);
    fclose(fp);
    fp = fopen("./photo.bmp","r+");
//准备一个3字节内存,用来表示bgr像素点信息
    bgr c1={0,0,0};
    bgr c2={0,0,230};
    bgr c3={0,200,230};
//偏移54个字节,让光标定位在存放像素点的首地址上
    fseek(fp,54,SEEK_SET);
//    int count=bmp_w*bmp_h/3;
//  fwrite(c1,3,count,fp);
//     fwrite(c2,3,bmp_w * bmp_h/3,fp);
//     fwrite(c3,3,bmp_w * bmp_h/3,fp);
     for(int i=0;i<bmp_w;i++)
    {
        for(int j=0;j<=bmp_h/3;j++){
            fwrite(c3,3,1,fp);
        }
    }
    for(int i=0;i<bmp_w;i++)
    {
        for(int j=0;j<=bmp_h/3;j++){
            fwrite(c2,3,1,fp);
        }
    }
    for(int i=0;i<=bmp_w;i++)
    {
        for(int j=0;j<bmp_h/3;j++){
            fwrite(c1,3,1,fp);
        }
    }
    fclose(fp);
    return 0;
}

 

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

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

相关文章

安装docker 并搭建出一颗爱心树

1、docker介绍 Docker 是⼀个开源的容器运⾏时软件&#xff08;容器运⾏时是负责运⾏容器的软件&#xff09;&#xff0c;基于 Go 语 ⾔编写&#xff0c;并遵从 Apache2.0 协议开源。 Docker可以让开发者打包⾃⼰的应⽤以及依赖到⼀个轻量的容器中&#xff0c;然后发布到任何…

开源大数据集群部署(十九)Hbase部署

作者&#xff1a;櫰木 1 HBASE 安装部署 hbase组件部署主机HMasterhd1.dtstack.com,hd2.dtstack.comHRegionServerhd3.dtstack.com,hd2.dtstack.com,hd1.dtstack.com 2 创建hbase Kerberos主体 在每台机器上进行生成 bash /data/kerberos/getkeytabs.sh /etc/security/key…

Kaggle注册验证码问题(Captcha must be filled out.)

Kaggle注册验证码问题 Captcha must be filled out.使用Edge浏览器 Header Editor 插件安装 下载插件Header Editor 导入重定向脚本 点击扩展插件&#xff0c; 打开Header Editor插件&#xff0c;进行管理 点击导入输入下载链接进行下载或者导入本地json文件(二者任选其一…

OpenHarmony系统开发之应用接口文件转换工具介绍

简介&#xff1a; 应用接口文件转换工具是根据异构格式接口文件(.h 文件)转换生成 OpenHarmony 系统应用层需要的 TS(type-script)接口文件(*.d.ts)的工具。若某个服务实现方式为 c&#xff0c;且供应用层访问的接口已在.h 文件中定义&#xff0c;此时&#xff0c;NAPI 接口开…

OpenHarmony无人机MAVSDK开源库适配方案分享

MAVSDK 是 PX4 开源团队贡献的基于 MavLink 通信协议的用于无人机应用开发的 SDK&#xff0c;支持多种语言如 C/C、python、Java 等。通常用于无人机间、地面站与通信设备的消息传输。 MAVLink 是一种非常轻量级的消息传递协议&#xff0c;用于与无人机&#xff08;以及机载无…

目标检测评价标准

主要借鉴&#xff1a;https://github.com/rafaelpadilla/Object-Detection-Metrics?tabreadme-ov-file 主要评价指标、术语&#xff1a; Intersection Over Union (IOU)&#xff1a;两个检测框交集面积与并集面积的比值 True Positive (TP)&#xff1a;IOU大于阈值的检测框…

计算机网络——30SDN控制平面

SDN控制平面 SDN架构 数据平面交换机 快速、简单&#xff0c;商业化交换设备采用硬件实现通用转发功能流表被控制器计算和安装基于南向API&#xff0c;SDN控制器访问基于流的交换机 定义了哪些可以被控制哪些不能 也定义了和控制器的协议 SDN控制器&#xff08;网络OS&#…

计算机基础系列 —— 虚拟机代码翻译器(1)

“Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program.” ―Linus Torvalds 文中提到的所有实现都可以参考&#xff1a;nand2tetris_sol&#xff0c;但是最好还是自己学习课程实现一…

Spring Cloud GateWay——网关的基本使用

1. 为什么所有的请求先到网关呢&#xff1f; 有了网关就可以对请求进行路由&#xff0c;路由到具体的微服务&#xff0c;减少外界对接微服务的成本&#xff0c;比如&#xff1a;400电话&#xff0c;路由的试可以根据请求路径进行路由、根据host地址进行路由等&#xff0c; 当微…

ios应用内支付

用uniapp开发iOS应用内支付 准备前端代码服务器端处理如果iOS支付遇到问题实在解决不了&#xff0c;可以联系我帮忙解决&#xff0c;前端后端都可以解决&#xff08;添加的时候一定要备注咨询iOS支付问题&#xff09; 准备前端代码 获取支付通道 (uni.getProvider) uni.getPr…

上岸美团了!

Hello&#xff0c;大家好&#xff0c;最近春招正在如火如荼&#xff0c;给大家分享一份美团的面经&#xff0c;作者是一份某双非的硕&#xff08;只如初见668&#xff09;&#xff0c;刚刚通过了美团的3轮面试&#xff0c;已经拿到offer&#xff0c;以下是他的一些分享。 一面&…

module ‘numpy‘ has no attribute ‘int‘

在 NumPy 中&#xff0c;如果遇到了错误提示 "module numpy has no attribute int"&#xff0c;这通常意味着正在尝试以错误的方式使用 NumPy 的整数类型。从 NumPy 1.20 版本开始&#xff0c;numpy.int 已经不再是一个有效的属性&#xff0c;因为 NumPy 不再推荐使用…