[gif] 基于gif.h的gif文件生成
来源:互联网 发布:投稿软件 编辑:程序博客网 时间:2024/05/28 05:13
MFC的demo下载 其运行如下图:
gif.h是一个开源的gif库,整个库只有一个头文件,用于gif文件的生成。其使用非常简单,仅需调用三个函数。
以下是一个简单的demo(待写入的图片数据,是模拟的RGBA数据):
#include "stdafx.h"#include "gif.h"#include <windows.h>#define WIDTH200#define HEIGHT150#define DELAY50 // 单位是1/100秒钟 即100表示一秒#define OUT_FILE "e:\\test.gif"// 模拟RGBA数据void UpdateData(BYTE* data, int length){static int i = 0;memset(data, 0, length);for (int x = 0; x < length; x += 4){int mod = (i % 3);if (mod == 0){data[x] = 255;}else if (mod == 1){data[x + 1] = 255;}else{data[x + 2] = 255;}}++i;}int _tmain(int argc, _TCHAR* argv[]){ int length = WIDTH * HEIGHT * 4; // 4 :仅支持RGBA格式的图像数据 alpha通道会被忽略BYTE* data = new BYTE[length]; GifWriter writer;if (!GifBegin(&writer, OUT_FILE, WIDTH, HEIGHT, DELAY)){delete[] data;return 1;}for (int i = 0; i < 20; ++i){UpdateData(data, length);GifWriteFrame(&writer, data, WIDTH, HEIGHT, DELAY);}GifEnd(&writer);delete[] data;return 0;}
备注》
1、经查看gif.h的源码 其写文件使用的是FILE 如果是windows的开发平台,可将FILE改为内存映射,提升文件IO的速度
2、gif.h采用了局部调色板(每个文件均有独立的调色板) 而不是全局调色板 相对于全局调色板 局部调色板的gif图像质量更高 但是占用的内存更多
另外还有一个用于gif文件编解码的开源库:giflib 待后续研究了再发一个demo
1 0
- [gif] 基于gif.h的gif文件生成
- matlab gif文件生成
- GIF
- gif
- gif
- gif
- gif
- GIF
- gif
- gif
- 生成动态GIF的方法
- Cocos2d-x 加载 gif 文件,生成jpg
- 将多张静态图片生成GIF文件
- JAVA生成GIF图片
- 生成gif 性能优化
- 生成GIF图片
- 在线生成loadoing.gif
- vc gif 动画生成
- 日月如梭,玩转JavaScript日期
- JSON 细微探究
- JAVA主线程
- LeetCode_452. Minimum Number of Arrows to Burst Balloons
- 袁芳的学习笔记(5)基于PredixUI的前端工程搭建
- [gif] 基于gif.h的gif文件生成
- java this关键字
- traing 3 暴力 SCU4440 Rectangle
- 取模操作(补充说明)
- 数据包、着色规则和提示
- 【统计学习方法】第2章 感知机(Perceptron)
- JavaScript字符集编码与解码
- 使用<ViewStub>实现view的延迟加载
- 提高AFL的fuzz速度