Project Icon

freeze

代码和终端输出图片生成工具

Freeze是一款命令行工具,用于生成代码和终端输出的图片。支持PNG、SVG和WebP格式,提供语法高亮、字体设置、窗口样式等自定义选项。具有交互式配置模式,便于个性化调整。适用于代码片段分享和终端输出展示,能快速创建可视化效果。

Freeze


最新版本 构建状态

生成代码和终端输出的图片。

Freeze 代码截图

示例

Freeze 可以生成代码和终端输出的 PNG、SVG 和 WebP 图片。

生成代码图片

freeze artichoke.hs -o artichoke.png

freeze 命令输出,Haskell 代码块

生成终端输出图片

你可以使用 freeze--execute 标志来捕获终端命令的 ANSI 输出。

freeze --execute "eza -lah"

freeze 命令输出,ANSI

Freeze 还高度可定制,并提供交互式 TUI

安装

# macOS 或 Linux
brew install charmbracelet/tap/freeze

# Arch Linux(顺便一提)
yay -S freeze

# Nix
nix-env -iA nixpkgs.charm-freeze

或者,下载:

或者,直接用 go 安装:

go install github.com/charmbracelet/freeze@latest

自定义

交互模式

Freeze 提供完全交互式模式,方便自定义。

freeze --interactive
freeze 交互模式

设置保存在 $XDG_CONFIG/freeze/user.json,可以通过 freeze --config user 访问。

标志

可以通过 --flags配置文件自定义截图。

[!注意] 可以通过 freeze --help 查看所有 freeze 自定义选项。

语言

如果可能,freeze 会从文件名或分析文件内容自动检测语言。可以使用 --language 标志覆盖这个推断。

cat artichoke.hs | freeze --language haskell

freeze 命令输出,Haskell 代码块

主题

更改颜色主题。

freeze artichoke.hs --theme dracula

freeze 命令输出,使用 dracula 主题的 Haskell 代码块

输出

更改输出文件位置,默认为 out.svg 或管道输出时为 stdout。此值支持 .svg.png.webp

freeze main.go --output out.svg
freeze main.go --output out.png
freeze main.go --output out.webp

# 或上述所有格式
freeze main.go --output out.{svg,png,webp}

字体

指定输出图像的字体系列、字体大小和字体行高。默认为 JetBrains Mono14(px)、1.2(em)。

freeze artichoke.hs \
  --font.family "SF Mono" \
  --font.size 16 \
  --line-height 1.4

你还可以使用 --font.file 标志嵌入字体文件(TTF、WOFF 或 WOFF2 格式)。

要在字体中使用连字,可以应用 --font.ligatures 标志。

行号

使用 --show-line-numbers 标志在终端窗口中显示行号。

freeze artichoke.hs --show-line-numbers

要只捕获特定范围的行号,可以使用 --lines 标志。

freeze artichoke.hs --show-line-numbers --lines 2,3

边框圆角

为终端添加圆角。

freeze artichoke.hs --border.radius 8

圆角为 8px 的代码截图

窗口

为终端添加 macOS 风格的窗口控件。

freeze artichoke.hs --window
freeze命令的输出,应用了窗口控件的Haskell代码块

背景

设置终端窗口的背景颜色。

freeze artichoke.hs --background "#08163f"

高度

设置终端窗口的高度。

freeze artichoke.hs --height 400

边框宽度

为终端窗口添加边框轮廓。

freeze artichoke.hs --border.width 1 --border.color "#515151" --border.radius 8

freeze命令的输出,应用了边框的Haskell代码块

内边距

为终端窗口添加内边距。你可以提供1、2或4个值。

freeze main.go --padding 20          # 所有边
freeze main.go --padding 20,40       # 垂直,水平
freeze main.go --padding 20,60,20,40 # 上,右,下,左

freeze命令的输出,应用了内边距的Haskell代码块

外边距

为终端窗口添加外边距。你可以提供1、2或4个值。

freeze main.go --margin 20          # 所有边
freeze main.go --margin 20,40       # 垂直,水平
freeze main.go --margin 20,60,20,40 # 上,右,下,左

freeze命令的输出,应用了外边距的Haskell代码块

阴影

在终端窗口下方添加阴影。

freeze artichoke.hs --shadow.blur 20 --shadow.x 0 --shadow.y 10

freeze命令的输出,带有阴影的Haskell代码块

截图TUI

使用tmux capture-pane来生成TUI的截图。

tmux中运行你的TUI,并将其调整到你想要捕获的状态。 然后,使用capture-pane捕获窗格并将其通过管道传递给freeze。

hx # 在单独的窗格中
tmux capture-pane -pet 1 | freeze -c full
使用freeze捕获的helix

配置

Freeze还支持通过JSON文件进行配置,可以使用--config / -c标志传递。通常,所有的--flag选项都直接映射到配置文件中的键和值。

Freeze还内置了一些默认配置,可以通过名称传递。

  • base:简单的代码截图。
  • full:类似macOS的截图。
  • user:使用~/.config/freeze/user.json

如果你使用--interactive模式,将会在~/.config/freeze/user.json创建一个配置文件。这将作为你截图的默认配置文件。

freeze -c base main.go
freeze -c full main.go
freeze -c user main.go # ~/.config/freeze/user.json的别名
freeze -c ./custom.json main.go

以下是一个示例配置:

{
  "window": false,
  "border": {
    "radius": 0,
    "width": 0,
    "color": "#515151"
  },
  "shadow": false,
  "padding": [20, 40, 20, 20],
  "margin": "0",
  "font": {
    "family": "JetBrains Mono",
    "size": 14
  },
  "line_height": 1.2
}

反馈

我们很乐意听到你对这个项目的想法。随时给我们留言!

许可证

MIT


Charm的一部分。

Charm标志

Charm热爱开源 • Charm loves open source

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号