#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. 子元素使用position:fixed,导致他的宽度不能和父元素保持一致的解决方案

    最近在编码过程中,遇到过这样一个问题,代码如下,我们有一个父级,他有一定的宽度,在他的里面有两个子级,其中一个是绝对定位的,且要求他们的宽度都和父级保持一致,然后问题就出现了,我们会发现,有了定位的s ...

  2. rem在三星s5部分机型情况下 设置的字体大小与手机实际字体大小不一致问题

    rem在三星s5部分机型情况下 设置的字体大小与手机实际字体大小不一致问题 判断是特殊机型,做特殊处理. var u=navigator.userAgent; if($(window).width() ...

  3. 针对sklearn.svm中的"dual_coef_"理解

    1.决策函数的表达式 公式: 其中: 2.SVM经过训练后,所得到的"dual_coef_" 其实"dual_coef_"就是"ai*yi" ...

  4. iOS马甲包上架总结

    https://www.jianshu.com/p/da0a259338ea iOS马甲包上架首先明白一点,这个上架的app马甲包一定是不合规的.不然也不会使用马甲包上架. 上架过程中遇到的坑. 因为 ...

  5. 通过view获取所在的viewController对象

    建议写成UIView的分类,如下: .h - (UIViewController *)viewController; .m - (UIViewController *)viewController { ...

  6. 整理了一下NLP中文数据集

    个人理解: 句子相似性判断.情感分析.实体识别.智能问答,本质基本上都是分类任务. 阅读理解(抽取式.回答式.完形填空)是逐个候选项的分类问题处理. 参考 https://github.com/chi ...

  7. nginx 书籍

    1.<实战nginx> 2.<深入理解nginx> 3.nginx开发从入门到精通 http://tengine.taobao.org/book/ 4.Nginx源码学习,配置 ...

  8. 2月送书福利:ASP.NET Core开发实战

    大家都知道我有一个公众号“恰童鞋骚年”,在公众号2020年第一天发布的推文<2020年,请让我重新介绍我自己>中,我曾说到我会在2020年中每个月为所有关注“恰童鞋骚年”公众号的童鞋们送一 ...

  9. freemarker.core.InvalidReferenceException: [... Exception message was already printed; see it above ...]

    FreeMarker template error:The following has evaluated to null or missing:==> product  [in templat ...

  10. nodejs的C++扩展中实现异步回调

    在nodejs的官方网站中有关于C++扩展的详细说明,其中包含了从"hello world"到对象封装的一系列示例.其中的“callback”节是关于回调函数的,美中不足的是,这个 ...