#chess #gif #pgn

bin+lib c2g

将您的棋类 PGN 文件转换为 GIF!

2 个不稳定版本

0.9.0 2024 年 5 月 9 日
0.7.4 2022 年 3 月 20 日

#8#pgn

GPL-3.0+

2.5MB
3K SLoC

c2g

♟️ 将您的棋类 PGN 转换为 GIF。 c2g 还为 Yew 网络应用程序提供动力: c2g-yew

用法

基本用法

将像素大小和输出文件传递给 c2g

cat example/example.pgn | ./c2g --size 640 --output example/chess.gif

将输出以下 640x640 的 GIF

Example

子弹

子弹游戏非常适合使用 --delay="real" 标志进行实时延迟

cat example/example_bullet.pgn | ./c2g --size 640 --delay="real" --output example/chess_bullet.gif

Example-Bullet

清洁

如果您更喜欢更简洁的外观而没有任何 功能,则可以禁用它们

cat example/example_no_clock.pgn | ./c2g --size 640 --no-player-bars --no-terminations --output example/chess_clean.gif

Example-Clean

安装

要安装 c2g,您可以下载从 版本 中可用的二进制文件之一。这些二进制文件使用默认功能 include-svgsinclude-fonts 编译,这意味着位于 svgs/fonts/ 的 svgs 和字体分别捆绑在二进制文件中,这使得它可以在任何地方运行,无需任何额外的依赖项。

从源代码编译

c2g 还可以通过获取存储库并使用 cargo 构建

git clone https://github.com/tomasfarias/c2g.git
cd c2g
cargo build --release

强烈建议使用 --release 标志进行构建,因为与调试构建相比,GIF 渲染性能非常优越。

默认情况下启用了 include-svgsinclude-fonts 功能,这些功能可以通过使用 --no-default-features 构建,以禁用。如果禁用,则需要通过 CLI 参数提供字体和 svgs 的路径。如果您希望使用不同的字体或棋子集,而不是使用 --no-default-features 并依赖 CLI 参数,请考虑将它们添加到 svgs/fonts/ 目录,并启用默认功能进行编译。

功能

玩家栏

如果可用,我们将在 GIF 的顶部和底部包含玩家的用户名、elo 和回合时钟。此功能可以通过传递 --no-player-bars 禁用。

时钟和实时

如果棋盘游戏PGN文件中包含%clk注释,c2g将尝试将它们解析为时长,以尝试估算每步棋所需的时间。每一轮的时钟都会包含在[玩家栏](#Player bars)中。此外,我们可以要求c2g使用实际时长作为GIF帧之间的延迟,使用--delay="real"选项。这对于通常持续1-2分钟或更短的速棋比赛来说尤其令人兴奋。

终止圆圈

gif的最后一张图片将在每个国王上方画一个小圆圈,以显示比赛的结果。某些终止状态有特殊的圆圈来指示比赛结束的原因。由于有众多可能导致棋局终止的原因,我们利用终止PGN标题来尝试缩小原因范围。如果标题不可用,或者在其中找不到任何原因,我们假设输掉的一方是因为选择绘制哪种圆圈而认输。目前,所有可能的和局都同样处理,以确定绘制哪种圆圈。

可以使用--no-termination禁用此功能。

许可

本项目中未列为例外情况的任何文件均受GNU通用公共许可证第3版许可。

以下(免费)例外情况适用

文件 作者 许可
svgs/cburnett/*.svg Colin M.L. Burnett GPLv2+
fonts/roboto.ttf Christian Robertson Apache 2.0
fonts/oswald.ttf Vernon Adams, Kalapi Gajjar, Cyreal 开放字体许可证

依赖项

~12–22MB
~285K SLoC