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 ...
随机推荐
- idea2018.3.6,离线使用maven的方法
(1)想办法拷贝联网电脑上已经下载好的仓库文件夹mavenRepository到离线环境的电脑上: (2)idea中按照如下图中配置: (3)打开 User settings file中设置的sett ...
- Android读取权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <use ...
- kvm的分层控制
第五层 virsh virt-manager(和libvirtd)利用了libvirt-api virsh pool-list --all virsh pool-define xxx/xml会 ...
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 排版:设置浮动和偏移
<!DOCTYPE html> <html> <head> <title>菜鸟教程(runoob.com)</title> <meta ...
- java获取指定月份有几个星期x,获取指定月份跨了多少个星期
例如获取2020年5月一共有多少个星期二,一共跨了多少个星期 public class MainTest { public static void main(String[] args) throws ...
- CentOS7编译安装httpd-2.4.41
安装参考环境: CentOS Linux release 7.5.1804 (Core) 一.安装依赖包 httpd安装的依赖包 # yum -y install pcre-devel # yum - ...
- Linux CentOS7 rsync通过服务同步、linux系统日志、screen工具
一.rsync通过服务同步 rsyncd.conf配置文件详解 port:指定在哪个端口启动rsyncd服务,默认是873端口. log file:指定日志文件. pid file:指定pid文件,这 ...
- Centos7 配置subversion
CentOS7:配置SVN服务器 Posted on 2016-11-10 15:17 eastson 阅读(4266) 评论(0) 编辑 收藏 1. 安装 CentOS通过yum安装subversi ...
- 微信红包系统设计 & 优化
微信红包系统设计 & 优化 浏览次数:151次 腾讯大讲堂 2015年04月02日 字号: 大 中 小 分享到:QQ空间新浪微博腾讯微博人人网豆瓣网开心网更多0 编者按:经过2014年一年 ...
- java也可以做出很漂亮的界面
其实java想把界面做漂亮点的话,只要把背景做好就行了,在jdk1.6以后可以继承JFrame,或JWindow后如下设置即可 setUndecorated(true);//不要标题栏的修饰,主要防止 ...