【问题标题】:is it possible to color java output in terminal using rgb or hex colors?是否可以使用 rgb 或十六进制颜色在终端中为 java 输出着色?
【发布时间】:2019-12-17 11:26:31
【问题描述】:

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

"\u001B[0m"

但是没有足够的多样性,我该怎么办?

【问题讨论】:

  • “不够多样化”是什么意思?
  • 终端文本可用的颜色取决于终端。
  • 我需要精确的颜色和 "\u001B[0m"... 方式,只允许 8 种颜色
  • 您是否阅读了 Ssr1369 链接上的答案?特别是第一个中的维基百科链接。

标签: java colors output


【解决方案1】:

ANSI 转义颜色代码有几种不同的变体。最古老和最广泛支持的是 3 位和 4 位颜色 discussed in other answers。但是,该标准还有 2 个更新的版本提供了更多的颜色:

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

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

根据this article,大约在 2016 年 9 月 22 日,Windows 10 控制台已更新为支持“24 位 RGB 真彩色”(截至 Windows 10 Insiders Build #14931)。这篇文章没有明确说明这种 24 位颜色与 ANSI 兼容,但它确实引用了使用“Linux 的 Windows 子系统 (WSL)”来运行“一些 Linux 脚本和工具来演示控制台的新 24 位颜色支持” .所以,我会假设它是 ANSI 兼容的。

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


用法:

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

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

\033[0m

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

Bash 脚本 4 位示例:

echo -e "\033[31mHello, World!\033[0m"

Java 示例 4 位示例:

String escapeCode = "\033[31m";
String resetCode = "\033[0m";

System.out.println(escapeCode + "Hello, World!");
System.out.println("Some more stuff I want to say.");
System.out.println(resetCode);
System.out.println("Now styling is default again.");

前言:

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

\033
\u001B

//The character with the numeric value of 27.
//Example in Java:
char escapeChar = (char) 27; 

8 位(256 色)

文本颜色(前景)

\033[38;5;__m

背景颜色

\033[48;5;__m

'm' 终止转义序列。将“__”替换为 0-255 之间的数字。换算表见the wiki

Ex (Teal - FG): \033[38;5;79m
Ex (Pink - FG): \033[38;5;207m

Ex (Teal - BG): \033[48;5;79m
Ex (Pink - BG): \033[48;5;207m

24 位“真彩色”

文本颜色(前景)

\033[38;2;<R>;<G>;<B>m

背景颜色

\033[48;2;<R>;<G>;<B>m

'm' 终止转义序列。将“”替换为 0-255 之间的数字。有关显示所有可能颜色的图表,请参阅 this article

Ex (Teal - FG): \033[38;2;27;161;147m
Ex (Pink - FG): \033[38;2;255;143;184m

Ex (Teal - BG): \033[48;2;27;161;147m
Ex (Pink - BG): \033[48;2;255;143;184m

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

Ex (Pink BG & Teal FG): \033[48;2;255;143;184;38;2;27;161;147m

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

注意:在处理 8 位和 24 位颜色代码时会覆盖 SGR 代码 2 和 5。 例如:“38;5;”表示 8 位前景文本颜色,即使单独使用,“5”表示缓慢闪烁。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-27
    • 1970-01-01
    • 2012-07-25
    • 1970-01-01
    • 2019-10-29
    • 1970-01-01
    • 2020-06-26
    相关资源
    最近更新 更多