是否可以使用 RGB 或十六进制颜色在终端中对 Java 输出进行着色?

lol*_*zen 5 java colors output

我正在尝试为我的java游戏输出彩色输出,该游戏仅使用终端,我想输出彩色的东西,但使用RGB值或十六进制颜色使用精确的颜色我该怎么办我已经看到了类似的颜色

“\u001B[0米”

但多样性不够,我该怎么办?

Yur*_*lle 3

ANSI 转义颜色代码有几种不同的变体。最古老和最广泛支持的是其他答案中讨论的3 位和 4 位颜色。然而,该标准还有 2 个较新的修订版,提供了更多的颜色:

\n
    \n
  • 8 位(256 色)
  • \n
  • 24 位“真彩色”
  • \n
\n

对每种颜色范围的支持取决于您运行的终端实现。至少以下终端支持 24 位“真彩色”前景色和背景色:Xterm、KDE ​​的 Konsole、iTerm 和所有基于 libvte 的终端(包括 GNOME 终端)。

\n

根据这篇文章,大约截至 2016 年 9 月 22 日,Windows 10 控制台已更新为支持“24 位 RGB 真彩色”(从 Windows 10 Insiders Build #14931 开始)。该文章没有明确指出该 24 位颜色与 ANSI 兼容,但它确实引用了使用“Windows Subsystem for Linux (WSL)”来运行“一些 Linux 脚本和工具来演示 Console\xe2\x80\x99s 新24 位颜色支持”。所以,我假设它是 ANSI 兼容的。

\n

可以在此处找到有关 ANSI 颜色标准的完整 Wiki 文章。

\n
\n

用法:

\n

为那些从未使用过 ANSI 转义码的人快速回顾一下。要使用 ANSI 转义序列,请将其视为字符串,并将其打印到控制台。这将更改控制台后打印的所有文本的样式。

\n

您可以重置样式,但打印转义序列:

\n
\\033[0m\n
Run Code Online (Sandbox Code Playgroud)\n

这会将所有样式重置为默认值。

\n

Bash 脚本 4 位示例:

\n
echo -e "\\033[31mHello, World!\\033[0m"\n
Run Code Online (Sandbox Code Playgroud)\n

Java 示例 4 位示例:

\n
String escapeCode = "\\033[31m";\nString resetCode = "\\033[0m";\n\nSystem.out.println(escapeCode + "Hello, World!");\nSystem.out.println("Some more stuff I want to say.");\nSystem.out.println(resetCode);\nSystem.out.println("Now styling is default again.");\n
Run Code Online (Sandbox Code Playgroud)\n

前言:

\n

ANSI 转义序列以转义字符开头,但该字符可以采用几种不同的方式编写,具体取决于您想要如何格式化数字。以下所有内容都是等效的:

\n
\\033\n\\u001B\n\n//The character with the numeric value of 27.\n//Example in Java:\nchar escapeChar = (char) 27; \n
Run Code Online (Sandbox Code Playgroud)\n

8 位(256 色)

\n

文本颜色(前景)

\n
\\033[38;5;__m\n
Run Code Online (Sandbox Code Playgroud)\n

背景颜色

\n
\\033[48;5;__m\n
Run Code Online (Sandbox Code Playgroud)\n

\'m\' 终止转义序列。将“__”替换为 0-255 之间的数字。请参阅wiki中的转换表。

\n
Ex (Teal - FG): \\033[38;5;79m\nEx (Pink - FG): \\033[38;5;207m\n\nEx (Teal - BG): \\033[48;5;79m\nEx (Pink - BG): \\033[48;5;207m\n
Run Code Online (Sandbox Code Playgroud)\n

24 位“真彩色”

\n

文本颜色(前景)

\n
\\033[38;2;<R>;<G>;<B>m\n
Run Code Online (Sandbox Code Playgroud)\n

背景颜色

\n
\\033[48;2;<R>;<G>;<B>m\n
Run Code Online (Sandbox Code Playgroud)\n

\'m\' 终止转义序列。将“<R/G/B>”替换为 0-255 之间的数字。请参阅本文,了解一些显示所有可能颜色的图表。

\n
Ex (Teal - FG): \\033[38;2;27;161;147m\nEx (Pink - FG): \\033[38;2;255;143;184m\n\nEx (Teal - BG): \\033[48;2;27;161;147m\nEx (Pink - BG): \\033[48;2;255;143;184m\n
Run Code Online (Sandbox Code Playgroud)\n

您还可以将它们组合成一个巨大的转义序列。

\n
Ex (Pink BG & Teal FG): \\033[48;2;255;143;184;38;2;27;161;147m\n
Run Code Online (Sandbox Code Playgroud)\n

您还可以使用其他文本装饰,例如下划线、删除线、粗体、微弱、反转 FG 和 BG 等。请参阅此表

\n

注意:操作 8 位和 24 位颜色代码时,SGR 代码 2 和 5 将被覆盖。\n例如:“38;5;” 表示 8 位前景文本颜色,即使就其本身而言,“5”表示缓慢闪烁。

\n