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 ...
随机推荐
- iOS 开发之 生产者与消费者模式及其实现
概念: 在工作中,大家可能会碰到这样一种情况:某个模块负责产生数据,这些数据由另一个模块来负责处理(此处的模块是广义的,可以是类.函数.线程.进程等).产生数据的模块,就形象地称为生产者:而处理数据的 ...
- string类的具体实现
bigThree,注意拷贝构造函数的写法. #ifndef __MYSTRING__ #define __MYSTRING__ class String { public: String(); Str ...
- centos7搭建hadoop2.10完全分布式
本篇介绍在centos7中大家hadoop2.10完全分布式,首先准备4台机器:1台nn(namenode);3台dn(datanode) IP hostname 进程 192.168.30.141 ...
- jsp格式化日期
1.先引入JSTL库 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%> ...
- typeof方法重写(区分数组对象)
为什么要重写typeof方法? typeof 可以准确的判断除object以外的基础数据类型,但不能区分object类型的具体类型,比如 Array .Date.NULL.NaN 以及自定义类. 观察 ...
- pytest框架,使用print在控制台输入
代码示例: import pytest@pytest.fixture(autouse=True,scope='session') #autouse=True,scope='session'def se ...
- Java基础知识笔记第九章:组件及事件处理
java Swing 图形用户界面(GUI : Graphics User Interface) 窗口 JFrame常用方法 JFrame()创建一个无标题的窗口. JFrame(String s)创 ...
- LeetCode困难题(一)
题目一: 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表. k 是一个正整数,它的值小于或等于链表的长度. 如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序. 示例 ...
- kafka 日志策略
日志查看: usr/local/kafka/kafka_2.11-2.4.0/bin/kafka-run-class.sh kafka.tools.DumpLogSegments --files /t ...
- Systemverilog for design 笔记(一)
转载请标明出处 一. System Verilog 声明的位置 1. 包(packages) Verilog要求局部声明: variables, nets, tasks and f ...