游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3616|回复: 3

关于BLP文件格式的问题

[复制链接]

78

主题

194

帖子

194

积分

注册会员

Rank: 2

积分
194
发表于 2004-8-21 19:09:00 | 显示全部楼层 |阅读模式
我找了一个BLP格式的说明,但是没看懂。上面这样说
struct  sBLP_HEADER_t   // 156 byte (0x9c)
{
    char      ident[4];    // 'BLP1'
   
    ulong_t   compress;
    ulong_t   nummipmaps;
   
    ulong_t   sizex;
    ulong_t   sizey;
   
    ulong_t   pictype, picsubtype;
    ulong_t   poffs[16], psize[16];

} ;


然后是调色盘数据和原始图片数据

调色盘数据:  256*4 byte, (RGB0)
原始图片数据:sizex * sizey * 2 byte


后面是 Mipmaps 数据



具体描述:

sBLP_HEADER_t::poffs[0] 是原始图片数据在文件中的偏移
sBLP_HEADER_t::psize[0] 是原始图片数据在文件中的大小

依次类推,总共最大保存有 16 组图片数据,
依次往下的图片数据的字节数是前一图片数据的 1/4, sizex & sizey 是前一图片数据的 1/2.


if (compress == 1)  图片是不压缩的, 使用调色盘模式存储
if (compress == 0)  图片是 JPEG 压缩格式, 需要跳到文件偏移 0xA0 处并跳过 624 (270H) 个字节
黑体的是什么意思,我尝试着跳到那个位置用IJL解码,无法读取jpeg_header,难道说是要自己填充jpeg_header,但是用editor看文件,明显从0xa0开始是类似jpeg_header的东西,但如果从0xa0处也无法读取

55

主题

175

帖子

193

积分

注册会员

Rank: 2

积分
193
发表于 2004-8-22 11:16:00 | 显示全部楼层

Re: 关于BLP文件格式的问题

采用JPEG压缩时无调试板数据块,
BLP_HEADER后紧跟一个DWORD表明JPEG Header大小,再紧跟Header数据.之后取出mipmap[1]的图像数据,与Header组合成一个JPEG格式文件数据.

78

主题

194

帖子

194

积分

注册会员

Rank: 2

积分
194
 楼主| 发表于 2004-8-22 11:19:00 | 显示全部楼层

Re:关于BLP文件格式的问题

谢谢,我试一下。

78

主题

194

帖子

194

积分

注册会员

Rank: 2

积分
194
 楼主| 发表于 2004-8-22 12:16:00 | 显示全部楼层

Re:关于BLP文件格式的问题

他的jpeg_header为什么不能用IJL的 jpeg_read_header(..)读取,读到width,height都为0,预示报错。我知道width,height在BLP header已经有了,但是我不能做任何事情。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-8-17 17:04

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表