golang终端色彩渲染工具库gookit/color支持16色/256色/RGB输出
Golang终端色彩渲染工具库gookit/color支持16色/256色/RGB输出
gookit/color是一个功能强大的命令行颜色库,支持16色、256色和真彩色(RGB)输出,提供统一的API方法并支持Windows环境。
基本特性
- 简单易用,零依赖
- 支持丰富的颜色输出:16色(4位)、256色(8位)、真彩色(24位,RGB)
- 支持将HEX、HSL值转换为RGB颜色
- 提供通用API方法:Print、Printf、Println、Sprint、Sprintf
- 支持HTML标签式颜色渲染
- 内置多种基本颜色和附加样式
- 支持通过NO_COLOR禁用颜色或使用FORCE_COLOR强制开启颜色渲染
- 支持RGB、256、16色之间的转换
安装
go get github.com/gookit/color
快速开始
package main
import (
"fmt"
"github.com/gookit/color"
)
func main() {
// 快速使用包函数
color.Redp("Simple to use color")
color.Redln("Simple to use color")
color.Greenp("Simple to use color\n")
color.Cyanln("Simple to use color")
color.Yellowln("Simple to use color")
// 类似fmt.Print*的使用方式
color.Red.Println("Simple to use color")
color.Green.Print("Simple to use color\n")
color.Cyan.Printf("Simple to use %s\n", "color")
color.Yellow.Printf("Simple to use %s\n", "color")
// 函数式使用
red := color.FgRed.Render
green := color.FgGreen.Render
fmt.Printf("%s line %s library\n", red("Command"), green("color"))
// 自定义颜色
color.New(color.FgWhite, color.BgBlack).Println("custom color style")
// 也可以这样:
color.Style{color.FgCyan, color.OpBold}.Println("custom color style")
// 内置主题/样式:
color.Info.Tips("message")
color.Info.Prompt("message")
color.Info.Println("message")
color.Warn.Println("message")
color.Error.Println("message")
// 使用样式标签
color.Print("<suc>he</><comment>llo</>, <cyan>wel</><red>come</>\n")
// 自定义标签属性:支持使用16色名称、256色值、rgb色值和hex色值
color.Println("<fg=11aa23>he</><bg=120,35,156>llo</>, <fg=167;bg=232>wel</><fg=red>come</>")
// 应用样式标签
color.Tag("info").Println("info style text")
// 提示消息
color.Info.Prompt("prompt style message")
color.Warn.Prompt("prompt style message")
// 提示消息
color.Info.Tips("tips style message")
color.Warn.Tips("tips style message")
}
16色基本用法
color.Bold.Println("bold message")
color.Cyan.Println("yellow message")
color.Yellow.Println("yellow message")
color.Magenta.Println("yellow message")
// 仅使用前景色
color.FgCyan.Printf("Simple to use %s\n", "color")
// 仅使用背景色
color.BgRed.Printf("Simple to use %s\n", "color")
256色用法
// 设置前景或背景颜色
c := color.C256(132) // 前景色
c.Println("message")
c.Printf("format %s", "message")
c = color.C256(132, true) // 背景色
c.Println("message")
c.Printf("format %s", "message")
// 256色样式
s := color.S256(32, 203)
s.Println("message")
s.Printf("format %s", "message")
// 带选项
s = color.S256(32, 203)
s.SetOpts(color.Opts{color.OpBold})
s.Println("style with options")
s.Printf("style with %s\n", "options")
RGB/真彩色用法
color.RGB(30, 144, 255).Println("message. use RGB number")
color.HEX("#1976D2").Println("blue-darken")
color.HEX("#D50000", true).Println("red-accent. use HEX style")
color.RGBStyleFromString("213,0,0").Println("red-accent. use RGB number")
color.HEXStyle("eee", "D50000").Println("deep-purple color")
HTML标签式用法
text := `
<mga1>gookit/color:</>
A <green>command-line</>
<cyan>color library</> with <fg=167;bg=232>256-color</>
and <fg=11aa23;op=bold>True-color</> support,
<fg=mga;op=i>universal API</> methods
and <cyan>Windows</> support.
`
color.Print(text)
颜色转换
basic := color.Red
basic.Println("basic color")
c256 := color.Red.C256()
c256.Println("256 color")
c256.C16().Println("basic color")
rgb := color.Red.RGB()
rgb.Println("rgb color")
rgb.C256().Println("256 color")
实用函数
func Basic2hex(val uint8) string
func Bg2Fg(val uint8) uint8
func Fg2Bg(val uint8) uint8
func C256ToRgb(val uint8) (rgb []uint8)
func C256ToRgbV1(val uint8) (rgb []uint8)
func Hex2basic(hex string, asBg ...bool) uint8
func Hex2rgb(hex string) []int
func HexToRGB(hex string) []int
func HexToRgb(hex string) (rgb []int)
func HslIntToRgb(h, s, l int) (rgb []uint8)
func HslToRgb(h, s, l float64) (rgb []uint8)
func HsvToRgb(h, s, v int) (rgb []uint8)
func Rgb2ansi(r, g, b uint8, isBg bool) uint8
func Rgb2basic(r, g, b uint8, isBg bool) uint8
func Rgb2hex(rgb []int) string
func Rgb2short(r, g, b uint8) uint8
func RgbTo256(r, g, b uint8) uint8
func RgbTo256Table() map[string]uint8
func RgbToAnsi(r, g, b uint8, isBg bool) uint8
func RgbToHex(rgb []int) string
func RgbToHsl(r, g, b uint8) []float64
func RgbToHslInt(r, g, b uint8) []int
项目截图
更多关于golang终端色彩渲染工具库gookit/color支持16色/256色/RGB输出的实战教程也可以访问 https://www.itying.com/category-94-b0.html
1 回复
更多关于golang终端色彩渲染工具库gookit/color支持16色/256色/RGB输出的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
gookit/color - Golang终端色彩渲染工具库
gookit/color 是一个功能强大的Go语言终端色彩渲染库,支持16色、256色和RGB真彩色输出。它提供了简单易用的API来为终端输出添加丰富的颜色和样式。
主要特性
- 支持16色、256色和RGB真彩色输出
- 跨平台兼容(Windows/Linux/macOS)
- 提供多种样式:加粗、斜体、下划线等
- 链式调用API设计
- 支持颜色标签解析
安装
go get github.com/gookit/color
基本使用示例
16色基本使用
package main
import (
"github.com/gookit/color"
)
func main() {
// 基本颜色输出
color.Red.Println("这是红色文字")
color.Green.Println("这是绿色文字")
color.Blue.Println("这是蓝色文字")
// 自定义样式
color.New(color.FgWhite, color.BgBlack, color.OpBold).Println("白字黑底加粗")
// 链式调用
color.Style{color.FgCyan, color.OpUnderscore}.Println("青色带下划线")
// 直接使用颜色代码
color.FgCyan.Printf("使用FgCyan打印\n")
color.BgYellow.Printf("使用BgYellow打印\n")
}
256色使用
func demo256Colors() {
// 使用256色前景色
color.C256(42).Println("这是256色中的42号颜色")
// 使用256色背景色
color.C256(201, true).Println("这是256色中的201号背景色")
// 组合使用
color.Style{
color.C256Fg(45), // 前景色
color.C256Bg(198), // 背景色
color.OpBold, // 加粗
}.Println("45号前景色和198号背景色加粗")
}
RGB真彩色使用
func demoRGBColors() {
// RGB前景色
color.RGB(255, 0, 0).Println("红色文字")
// RGB背景色
color.RGBStyle{
Foreground: color.RGB(0, 255, 0), // 绿色前景
Background: color.RGB(0, 0, 255), // 蓝色背景
}.Println("绿色文字蓝色背景")
// 直接使用16进制颜色码
color.HEX("#ff0000").Println("红色文字(HEX)")
color.HEXStyle("#ff0000", "#0000ff").Println("红字蓝底(HEX)")
}
标签解析
gookit/color支持类似HTML标签的语法来定义颜色:
func demoTagParser() {
// 启用颜色标签解析
color.Enable = true
// 使用标签定义颜色
color.Printf("<fg=yellow;bg=blue;op=bold>黄字蓝底加粗</>\n")
color.Printf("<fg=#ff0000>红色文字</>\n")
color.Printf("<fg=124>256色124号颜色</>\n")
// 也可以使用Println
color.Println("<fg=green>绿色文字</>")
}
高级功能
自定义主题
func demoTheme() {
// 定义主题
myTheme := color.Style{
color.FgGreen,
color.BgWhite,
color.OpBold,
}
// 使用主题
myTheme.Println("自定义主题输出")
// 修改主题
myTheme.Add(color.OpUnderscore)
myTheme.Println("添加下划线后的主题")
}
禁用/启用颜色
func demoEnableDisable() {
// 临时禁用颜色
color.Disable()
color.Red.Println("这行不会显示红色") // 无颜色输出
// 重新启用颜色
color.Enable()
color.Green.Println("这行会显示绿色")
}
注意事项
- 在Windows上需要调用
color.Enable = true
来启用颜色支持 - 某些终端可能不支持所有颜色和样式,特别是旧版Windows终端
- 可以通过环境变量
NO_COLOR
或调用color.Disable()
来全局禁用颜色输出
gookit/color库提供了丰富的终端颜色控制功能,可以轻松创建美观的命令行界面输出。无论是简单的颜色标记还是复杂的RGB真彩色输出,都能满足开发者的需求。