Image 如何在GIF图像中找到图像块的起始位置?

Image 如何在GIF图像中找到图像块的起始位置?,image,gif,decoding,file-format,Image,Gif,Decoding,File Format,资料来源- 在GIF图像中,实际图像大小(宽度、高度)存储在图像块中。据我所知,图像块是标题中包含的第一个块。 在实际块开始之前,有一个名为全局颜色表(0..255 x 3字节)的内存分配(从现在开始GCT)。如果我可以知道为GCT保留的字节数,我可以从图像块中提取字节5-9,并获得实际的图像大小 问题: 我如何知道/了解GCT的大小 或 GCT在哪里结束 或 图像块从哪里开始 或 图像块在哪里结束 您可以在此处找到gif enc/dec所需的全部内容 GCT 此块是可选的,并不总是出现在GIF

资料来源-

GIF图像中,实际图像大小(宽度、高度)存储在图像块中。据我所知,图像块是标题中包含的第一个块。 在实际块开始之前,有一个名为全局颜色表(0..255 x 3字节)的内存分配(从现在开始GCT)。如果我可以知道为GCT保留的字节数,我可以从图像块中提取字节5-9,并获得实际的图像大小

问题: 我如何知道/了解GCT的大小

GCT在哪里结束

图像块从哪里开始


图像块在哪里结束

您可以在此处找到gif enc/dec所需的全部内容

  • GCT

    此块是可选的,并不总是出现在GIF文件中。大小由GIF标题的颜色数和位宽决定。我像这样解码/加载它:

    struct\u hdr
    {
    //标题
    字节签名[3];/*头签名(始终为“GIF”)*/
    字节版本[3];/*GIF格式版本(“87a”或“89a”)*/
    //逻辑屏幕描述符
    单词xs;
    单词ys;
    字节压缩;/*屏幕和颜色映射信息*/
    字节背景色;/*背景色索引*/
    字节纵横比;/*像素纵横比*/
    }hdr;
    gcolor_位=(hdr.Packed&7)+1;//全球托盘
    scolor_位=((hdr.Packed>>4)和7)+1;//屏幕
    _gcolor_sorted=hdr.Packed&8;
    _gcolor_table=hdr.Packed&128;
    scolors=1