師匠の散歩

きままにPerlでも

カラーコード10進数変換

6桁の16進カラーコードを10進数のカンマ接続に変更/ subRGB1610.cgi

16進数を10進数に変換

この変換、どこで使うのかというと、国土地理院Mapである。国土地理院のAPIでは、色を16進数ではなくカンマ接続による10進数であらわすのである。

# ----------------------------------
# 16進数は6桁で入力する、3桁は想定していない
# ----------------------------------
sub rgb1610 {
  my $rgb=shift;
  $rgb =~ s/#//g;                   # 色コードの#があったら全て削除する
  my $red = substr ($rgb,0,2);
  my $green = substr ($rgb,2,2);
  my $blue = substr ($rgb,4,2);
  return   hex("$red").",".hex("$green").",".hex("$blue"); # 1行に書いた
}
00ff00 => 0,255,0
ffddac => 255,221,172
111111 => 17,17,17
#DCDCDC => 220,220,220

10進数を16進数に変換

逆に10進数を16進数に変換したい事例が出てきた。GDモジュールでは、色名を「rgb.txt」に記述しておき、それを呼び出すことで、記載された色名を利用することができる。その一般書式が次の形式なのだ。色名も、特殊な名称なのでここで一覧を作成することにした。

# ----------------------------------
# 10進数から16進数に変換する
# ----------------------------------
sub rgb1016 {
  return sprintf("#%02X%02X%02X",$_[0],$_[1],$_[2]);
}
rgb = 0,127,255 => #007FFF

subRGB1610.cgi // Topに戻る // indexに戻る
Copyright(C) 2009-2021 Grandmaster Last up : 2020/09/18