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数据并展示
网友评论