16位位图解析

 

16位图像的文件类顺序是这样的

Public Type BITMAPFILEHEADER
  bfType As Integer
  bfSize As Long
  bfReserved1 As Integer
  bfReserved2 As Integer
  bfOffBits As Long
End Type
Public Type BITMAPV4HEADER
  bV4Size As Long
  bV4Width As Long
  bV4Height As Long
  bV4Planes As Integer
  bV4BitCount As Integer
  bV4V4Compression As Long
  bV4SizeImage As Long
  bV4XPelsPerMeter As Long
  bV4YPelsPerMeter As Long
  bV4ClrUsed As Long
  bV4ClrImportant As Long
  bV4RedMask As Long
  bV4GreenMask As Long
  bV4BlueMask As Long
  bV4AlphaMask As Long
End Type
之后是图像图像数据

即位图数据前4个DWORD处是红色掩码,如果biCompression是BI_BITFIELDS的时候,要根据RGB掩码来判断图片是555格式还是565格式,

if(info.bmiHeader.biBitCount == 16 && info.bmiHeader.biCompression == BI_BITFIELDS)
{
  fseek(fp,fileheader.bfOffBits-sizeof(DWORD)*4, SEEK_SET);//移动文件指针到红色掩码处
  fread(&rMask, sizeof(DWORD),1,fp);//读取红色掩码
}
如果rMask为0x7C00就是555格式,是0xF800就是565格式

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值