美文网首页
使用android底层库实现gif的播放

使用android底层库实现gif的播放

作者: 爬行的蚂蚁2725 | 来源:发表于2018-12-24 18:23 被阅读0次

    gif图片格式:
    1.每一帧都是包含扩展块,(共4种扩展块)(控制当前帧的播放时间等)
    2.像素数据
    使用Handler 延时轮播 更新bitmap并在imgeView上显示

    主要类:

        typedef struct GifFileType {
            GifWord SWidth, SHeight;         图片宽高
            ColorMapObject *SColorMap;       压缩字典
            int ImageCount;                  帧个数
            GifImageDesc Image;              图片的内容区信息
            SavedImage *SavedImages;         所有帧数据数组
            int ExtensionBlockCount;         扩展块个数
            ExtensionBlock *ExtensionBlocks; 扩展块数组 
            void *UserData;                  用户数据(当前帧,延时数组,总帧数)
            ....
        } GifFileType;
    
        typedef struct SavedImage {
            GifImageDesc ImageDesc;         内容区
            GifByteType *RasterBits;         lzw算法获取的像素
            int ExtensionBlockCount;         扩展块个数   
            ExtensionBlock *ExtensionBlocks; 扩展块数组 
        } SavedImage;
        
        typedef struct GifImageDesc {
            GifWord Left, Top, Width, Height;   内容区的边距
            ColorMapObject *ColorMap;           压缩字典
        } GifImageDesc;
    

    实现步骤:
    1.创建一个空的bitmap
    2.更新bitmap数据并返回下一帧的延时时间(帧的图形控制块里有延时时间字段)
    利用AndroidBitmap_lockPixels函数创建图片数据,然后内容区的每个像素,经过压缩后赋值。
    3.利用Handler轮播更新bitmap数据并展示

    相关文章

      网友评论

          本文标题:使用android底层库实现gif的播放

          本文链接:https://www.haomeiwen.com/subject/aczzkqtx.html