使用 Ruby 打印颜色

问题描述 投票:0回答:1

使用 Replit 作为我的 IDE,我尝试创建一个输出调色板的程序(在控制台、文本文件或其他地方)。如何输出显示特定 rgb(或其他)值颜色的内容?

我相信宝石 Colorize 和 Rainbow 不允许您自定义文本的颜色。 我尝试过一些游戏创建 gem,例如 Ruby2D 或 Gosu,但由于它们依赖于 SDL2,因此我因 Replit 和我的 Linux 平台而遇到了问题。

请帮忙,我在这里有点绝望,因为这是一个学校项目。谢谢大家

ruby rubygems replit
1个回答
0
投票

使用 Replit 作为我的 IDE,我正在尝试创建一个输出调色板的程序(在控制台、文本文件或其他东西中)

调色板通常以特定文件格式存储,请参阅 https://www.selapa.net/swatches/colors/fileformats.php 了解详细概述。

您可以按照文件格式描述或使用库自行生成此类文件,例如ASE调色板.

请注意,这不会输出任何颜色。您必须在 GIMP 或 Photoshop 等图形程序中打开调色板。


如何输出显示特定 rgb(或其他)值颜色的内容?

这是一项不同的任务。程序不能直接输出颜色。他们可以输出文本或生成图像文件。

文本方面,您可以输出ANSI转义序列。这些代码可以被许多终端(包括 Replit)解释,并会产生彩色文本。

要获取(24 位)RGB 颜色,有:

ESC[38;2;⟨r⟩;⟨g⟩;⟨b⟩ m Select RGB foreground color
ESC[48;2;⟨r⟩;⟨g⟩;⟨b⟩ m Select RGB background color

在 Ruby 中:(

\e
是转义字符,
\e[0m
重置颜色)

puts "\e[38;2;244;128;36mOrange foreground\e[0m"
puts "\e[48;2;244;128;36mOrange background\e[0m"

它将打印为:(在 Replit 中)

Replit Output


图像方面,您可以使用 ChunkyPNG,一个古老但有效的 PNG 库,没有外部依赖。

在 Replit 中,创建一个“Ruby”项目,并将 gem 添加到您的

Gemfile
:

gem "chunky_png"

然后将

main.rb
更改为:

require "chunky_png"

color = ChunkyPNG::Color.rgb(244, 128, 36) # Stack Overflow orange
image = ChunkyPNG::Image.new(100, 100, color)
image.save("color.png")

运行项目。

这应该安装 gem 并在项目的根目录中生成一个新文件

color.png

color.png

您可以在Replit中打开PNG或下载它。

© www.soinside.com 2019 - 2024. All rights reserved.