静态图 -> 动态图
前面 【18-手动生成一张GIF图片】 和 【19-使用giflib处理GIF图片】 生成的 GIF 每一帧都是一个颜色,平时用到的 GIF 每一帧都是图片,下面就做一张每一帧都是图片的 GIF。
准备了 4 张静态图 .bmp
、 .png
、 .jpg
、 .gif
(静态的GIF):
BMP | PNG | JPG | GIF |
---|---|---|---|
![]() |
![]() |
![]() |
![]() |
Android.bmp | Huawei.png | Fuchsia.jpg | iOS.gif |
每张图片显示 1 秒,生成 GIF:
image to RGB
GIF 中使用 RGB 颜色索引来表示图像,每一帧图像最多 256 个颜色。所以第一步,要将静态图片转成 RGB。
BMP to RGB
根据 【05-RGB-TO-BMP使用开源库】 ,使用 libbmp 库来完成 .bmp
to RGB。
1 | int decodeBMP(char *filename, unsigned char **bmpRGB) { |
PNG to RGB
根据 【13-使用开源库生成PNG图片】 ,使用 libpng 库来完成 .png
to RGB。
1 | int decodePNG(char *filename, unsigned char **pngRGB) { |
JPG to RGB
根据 【16-使用libjpeg-trubo处理JPEG图片】 ,使用 libjpeg-turbo 库来完成 .jpg
to RGB。
1 | int decodeJPG(char *filename, unsigned char **jpgRGB) { |
GIF to RGB
根据 【19-使用giflib处理GIF图片】 ,使用 giflib 库来完成 .gif
to RGB。
1 | int decodeGIF(char *filename, unsigned char **gifRGB) { |
RGB 查看
1 | ffplay -f rawvideo -pixel_format rgb24 -video_size 400x400 texture.rgb |
RGB to GIF
将静态图转成 RGB 以后,就可以根据 【19-使用giflib处理GIF图片】 使用 giflib 将 RGB 编码成 GIF 动态图。
完整步骤
1 |
|
将 RGB 编码成 GIF 的方法 encodeGIF:
1 | int encodeGIF(unsigned char **RGBBuffers, int NumOfRGBBuffer, char *GIFFileName, |
查看 GIF
参考资料:
【音视频入门-16-使用libjpeg-trubo处理JPEG图片】
内容有误?联系作者: