4.7 KiB
4.7 KiB
FreezeLib 使用指南
FreezeLib 是一个 Go 库,用于生成美观的代码截图。
安装
go get github.com/landaiqing/freezelib
基本使用
1. 最简单的例子
package main
import (
"github.com/landaiqing/freezelib"
"os"
)
func main() {
// 创建实例
freeze := freezelib.New()
// 代码内容
code := `package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}`
// 生成 SVG
svgData, err := freeze.GenerateFromCode(code, "go")
if err != nil {
panic(err)
}
// 保存文件
os.WriteFile("hello.svg", svgData, 0644)
}
2. 从文件生成
// 直接从文件生成
svgData, err := freeze.GenerateFromFile("main.go")
if err != nil {
panic(err)
}
os.WriteFile("main.svg", svgData, 0644)
3. 生成 PNG 格式
// 生成 PNG 而不是 SVG
pngData, err := freeze.GeneratePNGFromCode(code, "go")
if err != nil {
panic(err)
}
os.WriteFile("hello.png", pngData, 0644)
4. 直接保存到文件
// 一步完成:生成并保存
err := freeze.SaveCodeToFile(code, "go", "output.svg")
if err != nil {
panic(err)
}
// 自动检测格式(根据文件扩展名)
err = freeze.SaveCodeToFile(code, "go", "output.png")
使用预设样式
// 使用预设配置,快速开始
freeze := freezelib.NewWithPreset("dark") // 深色主题
freeze := freezelib.NewWithPreset("terminal") // 终端风格
freeze := freezelib.NewWithPreset("presentation") // 演示风格
// 查看所有可用预设
presets := freeze.GetAvailablePresets()
// 返回: ["base", "compact", "dark", "full", "light", "minimal", "neon", "presentation", "retro", "terminal"]
自定义样式
基本设置
freeze := freezelib.New().
WithTheme("github-dark"). // 设置主题
WithFont("JetBrains Mono", 14). // 设置字体和大小
WithBackground("#1e1e1e"). // 设置背景色
WithPadding(20) // 设置内边距
svgData, err := freeze.GenerateFromCode(code, "go")
添加装饰效果
freeze := freezelib.New().
WithTheme("dracula").
WithWindow(true). // 添加窗口控件
WithLineNumbers(true). // 显示行号
WithShadow(20, 0, 10) // 添加阴影
svgData, err := freeze.GenerateFromCode(code, "python")
查看支持的选项
freeze := freezelib.New()
// 查看所有支持的语言(270+ 种)
languages := freeze.GetSupportedLanguages()
fmt.Printf("支持 %d 种语言\n", len(languages))
// 查看所有支持的主题(67+ 种)
themes := freeze.GetSupportedThemes()
fmt.Printf("支持 %d 种主题\n", len(themes))
// 查看所有可用预设(10 种)
presets := freeze.GetAvailablePresets()
fmt.Printf("可用预设: %v\n", presets)
终端输出截图
// 截图终端输出(支持 ANSI 颜色)
freeze := freezelib.NewWithPreset("terminal")
ansiOutput := "\033[32m✓ 测试通过\033[0m\n" +
"\033[31m✗ 构建失败\033[0m\n" +
"\033[33m⚠ 警告: API 已废弃\033[0m"
svgData, err := freeze.GenerateFromANSI(ansiOutput)
if err != nil {
panic(err)
}
os.WriteFile("terminal.svg", svgData, 0644)
批量处理文件
freeze := freezelib.NewWithPreset("dark")
files := []string{"main.go", "config.go", "utils.go"}
for _, file := range files {
err := freeze.SaveFileToFile(file, file+".svg")
if err != nil {
fmt.Printf("处理 %s 失败: %v\n", file, err)
continue
}
fmt.Printf("已生成: %s.svg\n", file)
}
自动语言检测
freeze := freezelib.New()
// 不指定语言,自动检测
code := `function hello() {
console.log("Hello, World!");
}`
// 自动检测为 JavaScript
svgData, err := freeze.GenerateFromCodeAuto(code)
if err != nil {
panic(err)
}
os.WriteFile("auto.svg", svgData, 0644)
错误处理
svgData, err := freeze.GenerateFromCode(code, "go")
if err != nil {
fmt.Printf("生成失败: %v\n", err)
return
}
// 保存文件
err = os.WriteFile("output.svg", svgData, 0644)
if err != nil {
fmt.Printf("保存失败: %v\n", err)
return
}
fmt.Println("生成成功!")
常用主题
github
- GitHub 浅色主题github-dark
- GitHub 深色主题dracula
- Dracula 主题monokai
- Monokai 主题nord
- Nord 主题
常用语言
go
- Go 语言python
- Pythonjavascript
- JavaScripttypescript
- TypeScriptjava
- Javarust
- Rustc
- C 语言cpp
- C++html
- HTMLcss
- CSSjson
- JSONyaml
- YAMLmarkdown
- Markdownbash
- Shell 脚本