gif_add_surface

此函数将表面上的帧保存为 GIF 文件。

您提供 GIF 文件 ID(由函数 gif_open 返回) 和表面 (由函数 surface_create 返回),以及帧之间的延迟时间。延迟时间以 1/100 秒计算,但请注意,创建 GIF 后,如果您将其用于促销目的,不同的浏览器对帧延迟的解释可能会略有不同 - 请参阅 此处 了解更多细节。您可以 (可选) 为用于添加到 GIF 的表面提供 X 和 Y 偏移值,在这种情况下,绘制到 GIF 的部分将从偏移开始,而不是从默认 (0, 0) 位置开始,从而允许您仅选择要添加的曲面的一部分。您还可以提供一个量化值,该值是 0 到 3 之间的整数,其中 0 是完全量化,3 是零量化 (较低的值将导致质量随后下降,但会创建较小的 GIF)。请注意,默认质量 2 和最高质量 3 之间没有太大区别,并且使用 3 会显着减慢 GIF 的创建速度,因此在使用最大值时应小心。

请注意,对于 GIF 中的帧数或这些帧的大小没有内置限制,但如果使用了太多内存,则函数将失败并返回 -1,否则将返回 0。

备注 此函数仅适用于使用 surface_rgba8unorm (默认)表面 格式的表面 。

 

语法:

gif_add_surface(gif_index, surface, delay_time, [xoffset], [yoffset]);

参数类型描述
gif_indexGIF ID添加表面数据的 GIF 的 ID
surfaceSurface用作添加框架的表面
delay_timeReal帧的延迟时间(以 100 秒为单位)
[xoffset]Real可选 要添加的表面沿 X 轴的偏移
[yoffset]Real可选 要添加的表面沿 Y 轴的偏移
[quantization]Real可选 从 0 到 3 的量化数量 (0 最低质量,3 最高质量,默认值为 2)

 

返回:

Real

 

例子:

if (save_gif == true)
{
    if (count == 0)
    {
        gif_image = gif_open(room_width, room_height);
    }
    else if (count < 30)
    {
        gif_add_surface(gif_image, application_surface, 6/100);
    }
    else
    {
        gif_save(gif_image, "GameCapture.gif");
        count = 0;
        save_gif = false;
    }
    count++;
}

以上代码将创建从应用程序表面获取的具有 30 帧的 GIF 图像文件,然后保存该文件。