此函数将表面上的帧保存为 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_index | GIF ID | 添加表面数据的 GIF 的 ID |
surface | Surface | 用作添加框架的表面 |
delay_time | Real | 帧的延迟时间(以 100 秒为单位) |
[xoffset] | Real | 可选 要添加的表面沿 X 轴的偏移 |
[yoffset] | Real | 可选 要添加的表面沿 Y 轴的偏移 |
[quantization] | Real | 可选 从 0 到 3 的量化数量 (0 最低质量,3 最高质量,默认值为 2) |
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 图像文件,然后保存该文件。