Techioz Blog

Rubyを使用した印刷カラー

概要

Replit を IDE として使用して、(コンソールまたはテキストファイルなどで) カラー パレットを出力するプログラムを作成しようとしています。特定の RGB (またはその他) 値の色を示すものを出力するにはどうすればよいですか?

Colorize と Rainbow ではテキストの色をカスタマイズできないと思います。 Ruby2D や Gosu などのゲーム作成ツールをいくつか試しましたが、それらは SDL2 に依存しているため、Replit と Linux プラットフォームが原因で問題が発生しました。

助けてください、これは学校のプロジェクトのため、ここで少し絶望的になりました。みんなありがとう

解決策

通常、カラー パレットは特定のファイル形式で保存されます。技術的な詳細については、https://www.selapa.net/swatches/colors/fileformats.php を参照してください。

このようなファイルは、ファイル形式の説明に従って自分で生成することも、ライブラリなどを使用して生成することもできます。 ASEパレット。

これでは色は出力されないことに注意してください。 GIMP や Photoshop などのグラフィック プログラムでカラー パレットを開く必要があります。

それは別の仕事です。 Ruby スクリプトには GUI がないため、色を直接出力できません。テキストを出力したり、画像ファイルを生成したりできます。

テキスト的には、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 の場合: (はエスケープ文字、[0m は色をリセットします)

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

次のように印刷されます: (Replit の場合)

画像に関しては、古いながらも外部依存関係のない正常に動作する PNG ライブラリである ChunkyPNG を使用できます。

Replit で、「Ruby」プロジェクトを作成し、Gemfile に gem を追加します。

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 が生成されます。