首页 > 其他分享 >获取任意bmp图片的参数函数设计

获取任意bmp图片的参数函数设计

时间:2024-05-11 19:10:21浏览次数:23  
标签:short 函数 int unsigned bmp include 任意 字节

/*
 * @Author: Eon [email protected]
 * @Date: 2024-05-08 14:24:52
 * @LastEditors: Eon [email protected]
 * @LastEditTime: 2024-05-11 18:57:02
 * @FilePath: \数据结构text\text,.c
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

#pragma pack(1)//取消字节对齐

//14字节
typedef  struct  tagBITMAPFILEHEADER
{ 
	unsigned short int  bfType;       //位图文件的类型,必须为BM 
	unsigned int       bfSize;       //文件大小,以字节为单位
	unsigned short int  bfReserverd1; //位图文件保留字,必须为0 
	unsigned short int  bfReserverd2; //位图文件保留字,必须为0 
	unsigned int       bfbfOffBits;  //位图文件头到数据的偏移量,以字节为单位
}BITMAPFILEHEADER;

//40字节
typedef  struct  tagBITMAPINFOHEADER 
{ 
	int biSize;                        //该结构大小,字节为单位 4
	int  biWidth;                     //图形宽度以象素为单位 4
	int  biHeight;                     //图形高度以象素为单位 4
	short int  biPlanes;               //目标设备的级别,必须为1  2
	short int  biBitcount;             //颜色深度,每个象素所需要的位数 2
	int  biCompression;        //位图的压缩类型 4
	int  biSizeImage;              //位图的大小,以字节为单位 4
	int  biXPelsPermeter;       //位图水平分辨率,每米像素数 4
	int  biYPelsPermeter;       //位图垂直分辨率,每米像素数 4
	int  biClrUsed;            //位图实际使用的颜色表中的颜色数 4
	int  biClrImportant;       //位图显示过程中重要的颜色数 4 
}BITMAPINFOHEADER;

#pragma pack()
//取消字节对齐
//显示任意大小的BMP图片
//x,y:显示的坐标
//w,h:图片的宽高
int main(int argc,char const *argv[])
{
	if(2!=argc)
    {
        printf("argument is invaild\n");
        return -1;
    }
	//1.打开BMP图片文件
	int bmp_fd = open(argv[1], O_RDONLY);
	if(bmp_fd == -1)
	{
		perror("BMP图片文件打开失败!");
		return -1;
	}
	struct tagBITMAPFILEHEADER s1;
	struct tagBITMAPINFOHEADER s2;

	read(bmp_fd,&s1,14);
	read(bmp_fd,&s2,40);

	printf("size=%d\nwighet=%d\nhighet=%d\n",s1.bfSize,s2.biWidth,s2.biHeight);
    
	//关闭BMP图片文件
	close(bmp_fd);
	
	return 0;
}

标签:short,函数,int,unsigned,bmp,include,任意,字节
From: https://www.cnblogs.com/eon4051/p/18187047

相关文章

  • 获取bmp图片信息
    /********************************************************************* filename: get_bmp_info.c* author :lzj* date :2024/05/11* function:获取bmp图片信息* note :None** CopyRight(c)[email protected]***......
  • BMP的结构体定义模板
    /****BMP文件头数据结构****/typedefstruct{unsignedchartype[2];//文件类型unsignedintsize;//文件大小unsignedshortreserved1;//保留字段1unsignedshortreserved2;//保留字段2unsignedintoffset;//......
  • el-cascader设置为任意一级选项,去除单选按钮以及点击关闭下拉选择
    1、标签组件:<el-cascaderref="cascaderRef1"popper-class="popper-cascader"@change="handleChangeCascader(cascaderRef1)"></el-cascader>2、给popper-cascader设置样式,在element-ui,scss里编写.popper-cascader.el-cascader-panel......
  • jmeter函数记录
    1、Jmeter时间偏移函数:__timeShift2、#vars保存对象类型(包括List,Map,closure之类),使用如下方法:#vars.putObject("object_name",Object);3、Jmeter执行文件与上传文件在同一文件夹下,获取相对路径先用BeanShell函数获取当前路径:importorg.apache.jmeter.services.File......
  • ELL-8051-LIB - 面向8051的高效低封装函数库+KLite - 简洁易用的嵌入式操作系统内核
    1、Arm-2D-基于Cortex-M的2D图形加速库ARM官方出品的2D图形加速库,在Cortex-M55系统频率8MHz下就可以实现30fps的渲染(6图层。320x240,rgb565)。项目主页: https://github.com/ARM-software/EndpointAI/tree/master/Kernels/Research/Arm-2DArm-2D库特性包括但不限于:*......
  • C++_函数式编程-以及常用序列化
    函数式编程函数式编程是一种编程范式,它强调程序的构建是通过应用(applying)和组合函数(composingfunctions)来实现的函数式编程属于“结构化编程”的一种,主要思想是把运算过程尽量写成一系列嵌套的函数调用 LambdaCalculus函数式编程语言早期的函数式......
  • 使用js有效括号匹配封装函数
    点击查看代码functionisValidParentheses(str){//定义一个栈,用于存储待匹配的左括号letstack=[];//定义一个对象,用于快速判断括号是否成对constpairs={')':'(','}':'{',']':'['};//遍历输入字符串for(let......
  • Go语言:内置函数
    什么是Go语言的内置函数呢?顾名思义,就是Go语言为了方便我们编程,提供了一些不需要导包就可以直接使用的函数,就叫内置函数了。常用的内置函数有哪些呢?1、len函数统计字符串的长度或者数组的长度等,统计字符串的长度时,是按照字节来统计的(Go语言中,一个汉字占3个字节)。2、new函数分......
  • 面向单片机的超轻量级的神经网络推理库+单片机上实现动态加载功能的函数库
    1、TinyMaix-面向单片机的超轻量级的神经网络推理库TinyMaix是专为低资源的单片机设计的AI神经网络推理框架,通常被称为TinyML。TinyMaix可以让你在任意单片机上运行轻量级深度学习模型。TinyMaix的设计原则:易用性>移植性>速度>空间。TinyMaix其实是矽速科技(Sipee......
  • 闭包函数最简单的理解
    闭包函数是指在编程中,一个函数可以访问其词法范围内的变量,即使在其定义之外执行。这意味着函数可以“捕获”其周围的环境,并在稍后的时间访问这些值。闭包函数通常用于创建函数工厂,或者用于在程序中创建私有变量和方法。在许多编程语言中,包括Python、JavaScript和Swift等,都支......