使用 giflossy 库的任何示例在 c/c++ 中创建 gif 文件
Any example to use giflossy library create gif file in c/c++
我目前的尝试:
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 link 也确实包含了您应该需要的所有 example code 才能正常工作。
我将从更改
开始
FILE* f = fopen("test.gif", "w");
至:
FILE* f = fopen("test.gif", "wb");
我目前的尝试:
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);
结果(只是一个屏幕截图):
即使没有一个简单的示例,您提供的 github link 也确实包含了您应该需要的所有 example code 才能正常工作。
我将从更改
开始FILE* f = fopen("test.gif", "w");
至:
FILE* f = fopen("test.gif", "wb");