C++如何通过文件读写解析GIF文件,并获得播放时长 如题,希望大家赐教~~感激,最好是有相关的库文件就最好了,如果好的话,我再送100分 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 好像CXIMAGE里面有,我给你链接,你自己下载下来看!http://www.codeproject.com/KB/graphics/cximage.aspx http://www.winu.cn/bbs/redirect.php?tid=12923&goto=lastpost 呵呵,谢谢大家,我已经解决问题了~~~用的方法是按照GIF的文件格式分析和LZW压缩存储结构,相关的结构体// 1. gif文件头typedef struct gifheader{ BYTE bySignature[3]; // 'G''I''F' BYTE byVersion[3]; // '8''7''a' 或 '8''9''a'} GIFHEADER;// 2. gif逻辑屏幕标识符typedef struct gifscrdesc{ WORD wWidth; WORD wHeight; struct globalflag { BYTE PalBits : 3; BYTE SortFlag : 1; BYTE ColorRes : 3; BYTE GlobalPal : 1; } GlobalFlag; BYTE byBackground; BYTE byAspect;} GIFSCRDESC;// 3. gif图像标识符typedef struct gifimage{ WORD wLeft; WORD wTop; WORD wWidth; WORD wHeight; struct localflag { BYTE PalBits : 3; BYTE Reserved : 2; BYTE SortFlag : 1; BYTE Interlace : 1; BYTE LocalPal : 1; } LocalFlag;} GIFIMAGE;// 4. gif图像压缩数据 LZW算法相关// 5. 图像控制扩充块(可选)typedef struct gifcontrol{ BYTE byBlockSize; struct flag { BYTE Transparency : 1; BYTE UserInput : 1; BYTE DisposalMethod : 3; BYTE Reserved : 3; } Flag; WORD wDelayTime; BYTE byTransparencyIndex; BYTE byTerminator;} GIFCONTROL;// 6. 图像说明扩充块typedef struct gifplaintext{ BYTE byBlockSize; WORD wTextGridLeft; WORD wTextGridTop; WORD wTextGridWidth; WORD wTextGridDepth; BYTE byCharCellWidth; BYTE byCharCellDepth; BYTE byForeColorIndex; BYTE byBackColorIndex;} GIFPLAINTEXT;// 7. 图像注释扩充块// 8. 应用程序扩充块typedef struct gifapplication{ BYTE byBlockSize; BYTE byIdentifier[8]; BYTE byAuthentication[3];} GIFAPPLICATION;// 9. gif文件结尾块 一个字节 0x3B 即 ';' 虚函数的执行过程 不是内存泄漏的内存泄漏 CScrollView遇到的问题 请您结合例子中的this讲解一下this指针 谢谢了 求outlook express添加联系人代码! 怎样实现锁定桌面的功能? 数据显示 datagrid 和listctrl,用哪个好。 一个关于C++ Socket编程的问题 如何实现屏蔽键盘的输入 而只能输入0~9、*和#这几种字符? 如何使CListView显示出来时设置垂直滑动条的位置,SetScrollPos好像有问题,无缘无故在表的上面多出来许多空行 怎么截获CComboBoxEx的WM_SETTEXT消息 请高手停下脚步,帮忙看看我的问题!谢谢先
http://www.codeproject.com/KB/graphics/cximage.aspx
typedef struct gifheader
{
BYTE bySignature[3]; // 'G''I''F'
BYTE byVersion[3]; // '8''7''a' 或 '8''9''a'
} GIFHEADER;// 2. gif逻辑屏幕标识符
typedef struct gifscrdesc
{
WORD wWidth;
WORD wHeight;
struct globalflag
{
BYTE PalBits : 3;
BYTE SortFlag : 1;
BYTE ColorRes : 3;
BYTE GlobalPal : 1;
} GlobalFlag;
BYTE byBackground;
BYTE byAspect;
} GIFSCRDESC;
// 3. gif图像标识符
typedef struct gifimage
{
WORD wLeft;
WORD wTop;
WORD wWidth;
WORD wHeight;
struct localflag
{
BYTE PalBits : 3;
BYTE Reserved : 2;
BYTE SortFlag : 1;
BYTE Interlace : 1;
BYTE LocalPal : 1;
} LocalFlag;
} GIFIMAGE;// 4. gif图像压缩数据 LZW算法相关// 5. 图像控制扩充块(可选)
typedef struct gifcontrol
{
BYTE byBlockSize;
struct flag
{
BYTE Transparency : 1;
BYTE UserInput : 1;
BYTE DisposalMethod : 3;
BYTE Reserved : 3;
} Flag;
WORD wDelayTime;
BYTE byTransparencyIndex;
BYTE byTerminator;
} GIFCONTROL;// 6. 图像说明扩充块
typedef struct gifplaintext
{
BYTE byBlockSize;
WORD wTextGridLeft;
WORD wTextGridTop;
WORD wTextGridWidth;
WORD wTextGridDepth;
BYTE byCharCellWidth;
BYTE byCharCellDepth;
BYTE byForeColorIndex;
BYTE byBackColorIndex;
} GIFPLAINTEXT;// 7. 图像注释扩充块
// 8. 应用程序扩充块
typedef struct gifapplication
{
BYTE byBlockSize;
BYTE byIdentifier[8];
BYTE byAuthentication[3];
} GIFAPPLICATION;// 9. gif文件结尾块 一个字节 0x3B 即 ';'