c/c++ 获取BMP文件信息
#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文件信息的更多相关文章
- C# 获取 mp3文件信息
C# 获取 mp3文件信息[包括:文件大小.歌曲长度.歌手.专辑] 第一种方式:[代码已验证] // http://bbs.csdn.net/topics/390392612 string fil ...
- android播放器如何获取音乐文件信息
转http://blog.csdn.net/hellofeiya/article/details/8464356, android自带的音乐播放器中,在获取音乐文件信息的时候是通过扫描得到相关信息的. ...
- 【ASP.NET 进阶】获取MP3文件信息并显示专辑图片
突发奇想,想弄个显示MP3文件信息和专辑图片的小Demo,个人不是大牛,遂百度之,总算搞定,现分享如下. 效果图: GIF效果图: 主要是依靠2个DLL文件:ID3.dll 和 Interop.She ...
- C# 获取 mp3文件信息【包括:文件大小、歌曲长度、歌手、专辑】
C# 获取 mp3文件信息[包括:文件大小.歌曲长度.歌手.专辑] 第一种方式:[代码已验证] // http://bbs.csdn.net/topics/390392612 string fil ...
- PHP获取Mp3文件信息
扫描本地MP3文件,获取文件信息
- 工作采坑札记:4. Hadoop获取InputSplit文件信息
1. 场景 基于客户的数据处理需求,客户分发诸多小数据文件,文件每行代表一条记录信息,且每个文件以"类型_yyyyMMdd_批次号"命名.由于同一条记录可能存在于多个文件中,且处于 ...
- JAVA通过URL链接获取视频文件信息(无需下载文件)
最近项目碰到一个大坑:APP上需要在获取视频列表时就获取视频的时长,但早期上传的时候数据库都没有保存这个数据,所以前段时间添加一个时长字段,在上传时手动输入视频时长,但是之前库中有上万条数据没这个信息 ...
- SQL SERVER获取数据库文件信息
MS SQL SERVER 获取当前数据库文件等信息,适用于多个版本: SELECT dbf.file_id AS FileID , dbf.name AS [FileName] , s.fi ...
- 获取mp4文件信息
计算电影长度 方法1 从mvhd - movie header atom中找到time scale和duration,duration除以time scale即是整部电影的长度. time scale ...
随机推荐
- Mac 系统添加右键功能菜单--新建 office,文档等
Mac 系统自带右键功能键比较少,可以添加服务来拓展功能项.例如 Windows 系统右键可以新建 Word 文档,Excel 工作表等,Mac 默认没有,需要进行设置添加. 首先 F4 键进入 La ...
- 浅谈SPFA——洛谷P1576 最小花费 题解
想找原题请点击这里:传送门 原题: 题目描述 在n个人中,某些人的银行账号之间可以互相转账.这些人之间转账的手续费各不相同.给定这些人之间转账时需要从转账金额里扣除百分之几的手续费,请问A最少需要多少 ...
- python3 getopt用法
python channel_builder.py -s /Users/graypn/ -d /Users/graypn/Documents -m 7 --out=report/xx.html 参数也 ...
- iOS开发架构学习记录
闲着没事看了一些iOS开发架构的视频,简单的介绍了几个常用的架构设计,现将它记录如下,以后有时间再专门写这方面的内容,大家可以看看,感兴趣的就进一步学习. 一.架构基础 1.架构设计的目的 进一步解耦 ...
- selenium 获取table数据
public class Table { /** * @param args */ public static void main(String[] args) { // TODO Auto-gene ...
- 笔记-pymysq-exception
笔记-pymysq-exception 1. exception DB API中定义了一些数据库操作的错误及异常,下表列出了这些错误和异常: 基本上是继承了Exception基类,没有添加额外功能. ...
- Manthan, Codefest 19 (open for everyone, rated, Div. 1 + Div. 2)B(SET)
#define HAVE_STRUCT_TIMESPEC#include<bits/stdc++.h>using namespace std;int a[2007];set<int& ...
- JS中,跨域调用(本地)另一个项目的方法
IP地址,因为是本地的项目,所以我一开始写的是127.0.0.1...,但不对.应该写本机的IP地址才对!
- Oracle常用命令复习(备考资料)
Oracle期末考试复习资料,大概的总结了常用的命令,不包括基础理论知识,有的不太考的东西没有整理.资料整理是在有道云笔记里完成的,在这里重新编辑太麻烦了,就附个链接了. 文档:Oracle命令复习2 ...
- php中$_REQUEST、$_POST、$_GET的区别和联系小结
php中$_REQUEST.$_POST.$_GET的区别和联系小结 作者: 字体:[增加 减小] 类型:转载 php中有$_request与$_post.$_get用于接受表单数据,当时他们有何 ...