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