オリジナルアプリを作成し始めたら、色を扱うためにRGBから16進数のカラーコードへ変換したい場面が増えてきました。 他にもいいツールはあるでしょうが、せっかくなので、自分で作ってみました。
Rubyの記述
- まずは、R、G、Bをそれぞれ入力します。
- その後、7行目でそれぞれ16進数に変換し、つなげます。
詳しく解説
format("%X", R)
・・・Rを16進数に直す
(例) 200 → "C8" / 15 → "F"
→これを、2桁表示にしたい
format("%2X", R)
・・・「2」を付ける
(例) 200 → "C8" / 15 → " F"
→1桁目の半角スペースを0にしたい
format("%02X", R)
・・・「0」を付ける
(例) 200 → "C8" / 15 → "0F"
→GとBも加えたい
format("%02X%02X%02X", R, G, B)
・・・それぞれ併せる
(例) R=200 G=15 B=1 → "C80F01"
format("#%02X%02X%02X", R, G, B)
・・・さらに、頭に「#」を付けると完成
(例) R=200 G=15 B=1 → "#C80F01"
起動方法
これで変換器自体はできましたが、いちいちターミナルを開いて、
ruby ~/ruby/RGBconverter.rb
のように入力するのは手間だし、それなら手で計算したほうが早いです。
なので、ショートカットダブルクリック(またはSpotlight検索)ですぐ起動できるようにします。 (これよりもっとスマートな方法がありそうですが・・・)
RGBconverter.commandという名前で、以下の内容のファイルを作成します。
※内容はターミナルでルビーを開くときのコマンドで、ruby (RGBの絶対パス)
その後、このまま開こうとすると下記のようなメッセージが出て、実行することができません。
そこで、
chmod a+x ~/Desktop/RGBconverter.command
のようにアクセス権限を付与してやります。
これで、完成です。
SpotlightでRGBconverter.commandを検索してやって実行すると、ターミナル が開いて入力待ちになるので、RGBを順に入力してやるとカラーコードを表示してくれます。
追記
上記のRubyで空白を0に置き換えたところについて
format("%02X", R)
(例) 200 → "C8" 15 → "0F"
「0」の代わりに他の文字「a」などを入れても、その文字に置き換えてくれるわけではないようです。
何か方法があるのかもしれませんが・・・