我目前的尝试:
Gif_Stream* gfs = Gif_NewStream();
gfs->screen_width = 640;
gfs->screen_height = 480;
Gif_Colormap *cm = Gif_NewFullColormap(216, 256);
Gif_Color *col = cm->col;
for (int i = 0; i < 216; i++) {
col[i].gfc_red = (i / 36) * 0x33;
col[i].gfc_green = ((i / 6) % 6) * 0x33;
col[i].gfc_blue = (i % 6) * 0x33;
}
gfs->global = cm;
// load image
...
for (int i = 0; i < n; ++i)
{
Gif_Image* gfi = Gif_NewImage();
// set width/height
gfi->width = imgW;
gfi->height = imgH;
Gif_SetUncompressedImage(gfi, pixelPtr, Gif_Free, 0);
Gif_AddImage(gfs, gfi);
}
FILE* f = fopen("test.gif", "w");
Gif_WriteFile(gfs, f);
fclose(f);
结果(仅是屏幕截图):只需在顶部显示一些错误颜色。
https://github.com/pornel/giflossy中没有简单的示例。
最佳答案
即使没有简单的示例,您提供的github链接也确实包含了使此工作所需的所有example code。
我将从改变开始
FILE* f = fopen("test.gif", "w");
至:
FILE* f = fopen("test.gif", "wb");