#include <stdio.h>
#include <string.h>
typedef struct BITMAPFILEHEADER
{ // BMP文件头
u_int16_t bfType; //2Bytes,必须为"BM",即0x424D 才是Windows位图文件
u_int32_t bfSize; //4Bytes,整个BMP文件的大小
u_int16_t bfReserved1; //2Bytes,保留,为0
u_int16_t bfReserved2; //2Bytes,保留,为0
u_int32_t bfOffBits; //4Bytes,文件起始位置到图像像素数据的字节偏移量
}__attribute__ ((packed)) BITMAPFILEHEADER; typedef struct BITMAPINFOHEADER
{ // BMP信息头
u_int32_t biSize; //4Bytes,INFOHEADER结构体大小,存在其他版本I NFOHEADER,用作区分
u_int32_t biWidth; //4Bytes,图像宽度(以像素为单位)
u_int32_t biHeight; //4Bytes,图像高度,+:图像存储顺序为Bottom2Top,-:Top2Bottom
u_int16_t biPlanes; //2Bytes,图像数据平面,BMP存储RGB数据,因此总为1
u_int16_t biBitCount; //2Bytes,图像像素位数
u_int32_t biCompression; //4Bytes,0:不压缩,1:RLE8,2:RLE4
u_int32_t biSizeImage; //4Bytes,4字节对齐的图像数据大小
u_int32_t biXPelsPerMeter; //4 Bytes,用象素/米表示的水平分辨率
u_int32_t biYPelsPerMeter; //4 Bytes,用象素/米表示的垂直分辨率
u_int32_t biClrUsed; //4 Bytes,实际使用的调色板索引数,0:使用所有的调色板索引
u_int32_t biClrImportant; //4 Bytes,重要的调色板索引数,0:所有的调色板索引都重要
}__attribute__ ((packed)) BITMAPINFODEADER; typedef struct _tagRGBQUAD
{ //BMP调色板
char rgbBlue; //指定蓝色强度
char rgbGreen; //指定绿色强度
char rgbRed; //指定红色强度
char rgbReserved; //保留,设置为0
}__attribute__ ((packed)) RGBQUAD; // 如果文件是BMP,则取它的信息
int getBMPinfo(const char* pathname)
{
// 处理文件
BITMAPFILEHEADER head;
BITMAPINFODEADER info;
char output_pathname[] = {};
FILE *fp;
char headbuf[];
fp = fopen(pathname,"rb");
fread(headbuf,,,fp);
fseek(fp,,SEEK_SET);
fread(&head, , sizeof(BITMAPFILEHEADER), fp); // BMP文件头
fread(&info, , sizeof(BITMAPINFODEADER), fp); // BMP信息头
if(strncmp(headbuf,"BM",)==)
{
// 是BMP文件
printf("是BMP文件\n");
printf("宽度: %d\n",abs(info.biWidth));
printf("高度: %d\n",abs(info.biHeight));
return ;
} fclose(fp); return -;// DEBUG
}

c/c++ 获取BMP文件信息的更多相关文章

  1. C# 获取 mp3文件信息

    C# 获取 mp3文件信息[包括:文件大小.歌曲长度.歌手.专辑] 第一种方式:[代码已验证] // http://bbs.csdn.net/topics/390392612   string fil ...

  2. android播放器如何获取音乐文件信息

    转http://blog.csdn.net/hellofeiya/article/details/8464356, android自带的音乐播放器中,在获取音乐文件信息的时候是通过扫描得到相关信息的. ...

  3. 【ASP.NET 进阶】获取MP3文件信息并显示专辑图片

    突发奇想,想弄个显示MP3文件信息和专辑图片的小Demo,个人不是大牛,遂百度之,总算搞定,现分享如下. 效果图: GIF效果图: 主要是依靠2个DLL文件:ID3.dll 和 Interop.She ...

  4. C# 获取 mp3文件信息【包括:文件大小、歌曲长度、歌手、专辑】

    C# 获取 mp3文件信息[包括:文件大小.歌曲长度.歌手.专辑] 第一种方式:[代码已验证] // http://bbs.csdn.net/topics/390392612   string fil ...

  5. PHP获取Mp3文件信息

    扫描本地MP3文件,获取文件信息

  6. 工作采坑札记:4. Hadoop获取InputSplit文件信息

    1. 场景 基于客户的数据处理需求,客户分发诸多小数据文件,文件每行代表一条记录信息,且每个文件以"类型_yyyyMMdd_批次号"命名.由于同一条记录可能存在于多个文件中,且处于 ...

  7. JAVA通过URL链接获取视频文件信息(无需下载文件)

    最近项目碰到一个大坑:APP上需要在获取视频列表时就获取视频的时长,但早期上传的时候数据库都没有保存这个数据,所以前段时间添加一个时长字段,在上传时手动输入视频时长,但是之前库中有上万条数据没这个信息 ...

  8. SQL SERVER获取数据库文件信息

        MS SQL SERVER 获取当前数据库文件等信息,适用于多个版本: SELECT dbf.file_id AS FileID , dbf.name AS [FileName] , s.fi ...

  9. 获取mp4文件信息

    计算电影长度 方法1 从mvhd - movie header atom中找到time scale和duration,duration除以time scale即是整部电影的长度. time scale ...

随机推荐

  1. Python笔记⑤爬虫

    爬虫的前奏 # 爬虫前奏 # 明确目的 # 找到数据对应的网页 # 分析网页的结果找到数据所在的标签位置 # 模拟HTTP请求,向服务器发送这个请求,获取到服务器返回给我们的HTML # 用正则表达式 ...

  2. ajax方法详解

    $.ajax()常用参数的设置及其意义 $.ajax({ async:true, /*是否异步请求,用这对象的目的就是为了异步请求,所以此值一般不变,恒为true*/ cache:false, /*是 ...

  3. 15、python面对对象之类和对象

    前言:本文主要介绍python面对对象中的类和对象,包括类和对象的概念.类的定义.类属性.实例属性及实例方法等. 一.类和对象的概念 问题:什么是类?什么是实例对象? 类:是一类事物的抽象概念,不是真 ...

  4. 刷题17. Letter Combinations of a Phone Number

    一.题目说明 题目17. Letter Combinations of a Phone Number,题目给了下面一个图,输入一个字符串包括2-9,输出所有可能的字符组合. 如输入23所有可能的输出: ...

  5. maven设置jdk版本

    方法一:在maven文件夹下的settings.xml中添加 <profile> <id>jdk-1.8</id> <activation> <a ...

  6. 第七届蓝桥杯javaB组真题解析-抽签(第五题)

    题目 /* 抽签 X星球要派出一个5人组成的观察团前往W星. 其中: A国最多可以派出4人. B国最多可以派出2人. C国最多可以派出2人. .... 那么最终派往W星的观察团会有多少种国别的不同组合 ...

  7. MyBatis 入门Demo

    新建数据库my_db,新建表student_tb id为主键,不自动递增. 不必插入数据. 下载MyBatis https://github.com/mybatis/mybatis-3/release ...

  8. 从数组A中删除在数组B中存在的元素,用C语言实现

    从数组A中删除在数组B中存在的元素,用C语言实现 考验数组操作的能力,C语言的熟练程度. //功能:从数组A中删除在数组B中也存在的数据 //输入:arrA --- 数组A // lenA --- 数 ...

  9. PAT T1008 Airline Routes

    用tarjan算法缩点~ #include<bits/stdc++.h> using namespace std; ; vector<int> g[maxn]; int N,M ...

  10. Python环境搭建-2 编译器和解释器

    编译器与解释器 编译器/解释器:高级语言与机器之间的翻译官 都是将代码翻译成机器可以执行的二进制机器码,只不过在运行原理和翻译过程有不同而已. 那么两者有什么区别呢? 编译器:先整体编译再执行 解释器 ...