.NET TIPS ピクセルの色をHTMLカラーへ変換するには?デジタルアドバンテージ2003/05/23 |
|
|
.NET Frameworkで画像を扱う場合、画像上の各ピクセルの値(色)はColor構造体(System.Drawing名前空間)によりARGB形式(アルファ値(透明度)、赤、緑、青のデータを順に記述したもの。各要素は8bit)で表される。一方、HTMLでは、色は‘#’記号を先頭に付けた16進数の文字列で表される(例えば、赤は「#FF0000」、青は「#0000FF」)。
このColor構造体の値と、HTMLカラーの文字列は、ColorTranslatorクラス(System.Drawing名前空間)で用意されているstaticなメソッドにより相互に変換することができる。
まず、Color構造体の値からHTMLカラー文字列への変換には、ToHtmlメソッドを使用する。次のコードは、Color構造体のFromArgbメソッドにより赤を示すColor構造体のオブジェクトを作成し、それをHTMLカラー文字列へと変換している。
Color argbRed = Color.FromArgb(255, 0, 0);
string htmlRed = ColorTranslator.ToHtml(argbRed); // #FF0000
逆の変換は、次のようにしてFromHtmlメソッドを使用する。
Color argbRed2 = ColorTranslator.FromHtml(htmlRed);
ColorTranslator.ToHtmlメソッドを利用して少し面白いサンプル・プログラムを作成してみた。このプログラムは、この.NET TIPSコーナーのアイコン(JPEG画像)を読み込み、それを「HTMLのテーブル」に変換して出力する。
|
|
JPEG画像をTABLEタグに変換するC#のサンプル・プログラム(tableart.cs) | |
このサンプル・プログラムはHTMLを出力するので、出力結果を次のように適当なHTMLファイルに保存してからIEで表示していただきたい。
tableart.exe > result.html
このようにして作成したHTMLファイルをIEで表示すると次のような画面になる。
サンプル・プログラムで出力されるHTMLをファイルに保存し、IEで表示した画面 |
上のIE内の画像は、一見すると画像ファイルを表示しているだけのように見えるが、幅と高さが5ピクセルのセルからなるHTMLベースのテーブル(<table>タグを利用して記述している)で、ピクセルの色をセルの背景色にすることで表示を実現している。
なお、Web上の画像を読み込むための方法は、「TIPS:画像を読み込むには?」で解説している。画像を読み込んで作成したBitmapクラスのオブジェクトに対しては、GetPixelメソッドにより指定した位置のピクセルの色をColor構造体の値として取得することができる。
また、サンプル・プログラムではHTML文を含んだ長い1つの文字列を作成するのにStringBuilderクラスを利用している。こちらについては「TIPS:文字列を連結するには?」を参考にしていただきたい。
カテゴリ:クラス・ライブラリ 処理対象:ビットマップ 使用ライブラリ:Color構造体(System.Drawing名前空間) 使用ライブラリ:ColorTranslatorクラス(System.Drawing名前空間) 関連TIPS:画像を読み込むには? 関連TIPS:文字列を連結するには? |
|
「.NET TIPS」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|