ピットマップコンバータ
ビットマップコンバータ
ビットマップコンバータは、使いやすいWindowsプログラムです。単にアプリケーションに(BMPまたは、gifファイルの形)でビットマップをロードする。希望する必要がある場合に色形式を変換し、適切な形式で保存することによって、Cのファイルに変換します。Cファイルは、イメージがemWinとディスプレイ上に表示できるように、コンパイルされることがあります。
何をするか
ビットマップコンバータは、主にCのファイルにPCのフォーマットからビットマップを変換するためのツールとして意図されている。emWinで使用できるビットマップは通常、CのGUI_BITMAP構造体として定義されている構造 - またはむしろ、これらの構造によって参照される画像データは、 - 非常に大きくなることがあります。それは、手動でこれらのビットマップを生成するために時間がかかり、非効率的です。そこで、自動的にビットマップからのCファイルを生成するビットマップコンバータを、使用することをお勧めします。他の有用な機能は、C言語のストリームファイルとして画像を保存する機能です。通常のCのファイルに対する利点は、Cのファイルは、アドレス可能なCPUの領域に配置する必要があるのに対し、これらのデータストリームを任意のメディア上の任意の場所に存在すること、です。また、結果のCコードが不必要に大きさがないように、色変換を備えています。通常は、メモリ消費を減らすために、ピクセルあたりのビット数を減らすことができます。ビットマップコンバータは、変換後の画像が表示されます。単純な関数の数は、(これらの機能は、イメージメニューの下に見つけることができる)それを回転し、ビットマップインデックスまたは色反転、水平方向または垂直方向にビットマップを反転、拡大縮小サイズを含む、ビットマップ変換を行うことができる。画像へのそれ以上の修正はAdobe PhotoshopやコーレルPhotoPaintをなどのビットマップ編集プログラムで行う必要があります。それは通常の変換のみを目的としてビットマップコンバータを使用して、このようなプログラム中の任意の画像の変更を行うために最も理にかなっています。
ビットマップのロード
サポートされている入力ファイル形式
ビットマップコンバータは、基本的にWindowsビットマップファイル(*. BMP)、"グラフィックスインターチェンジ形式"(*. GIF)と"ポータブルネットワークグラフィックス"(*. PNG)をサポートしています:
Windowsビットマップファイル(BMP)
ビットマップコンバータは、最も一般的なビットマップのファイル形式をサポートしています。次の形式のビットマップファイルは、ビットマップコンバータで開くことができます。
- パレットと1ピクセルあたり1、4または8ビット(bpp);
- パレットのない16、24または32 bppの(各色はRGBの値を割り当てられているフルカラーモード)
- RLE4とRLE8。
グラフィックスインターチェンジ形式(GIF)
ビットマップコンバータは、GIFファイルごとに1つの画像の読み込みをサポートしています。たとえば、ファイルに複数の画像から成る動画が含まれている場合、コンバータは最初の画像だけを読み込みます。透明性やインターレースGIFイメージは、コンバータによってサポートされています。
ポータブルネットワークグラフィック(PNG)
PNG形式はアルファブレンディングを使用してイメージを作成するために最も推奨されるフォーマットです。ビットマップコンバータは、アルファチャンネルを持つPNGイメージの読み込みサポートしています。
その他のフォーマット
ビットマップの他のタイプ(つまり、JPG、JPEG、PNG、tifファイル)、別のプログラムで開くクリップボードにコピーされ、ビットマップコンバータに貼り付けることができます。このプロセスは、ファイルから直接読み込むのと同じ効果を達成します。
ビットマップから生成するCファイル
ビットマップコンバータの主な機能は、emWinで使用できるCのファイルにPCフォーマットのビットマップを変換することです。そうする前に、しかし、それは生成されたCのファイルが過度に大きくならないように、画像のカラーパレットを変更することが望ましい場合があります。
ビットマップが、bmpまたは再ロードして使用することができます。gifファイル(として保存されることがありますまたは他のビットマップ編集プログラムにロード)またはCのファイルとして。ACファイルは、Cコンパイラの入力ファイルとして配信されます。それはパレットが含まれている場合があります(デバイスに依存しないビットマップ、またはDIB)または(デバイス依存ビットマップ、またはDDB)なしで保存すること。彼らはどんなディスプレイで正しく表示されるようにDIBをは、推奨されています。DDBはビットマップと同じパレットを使用してディスプレイに正しく表示されます。Cファイルは、"パレットとC"、"パレットのないC"、"パレットを持つC、圧縮された"または"パレットのないC、圧縮された"として生成されることがあります。 ビットマップコンバータを使用するための基本的な手順は示されているテーブル内のステップバイステップ以下に:
ステップ1:
|
|
ステップ2:
|
この例では、ロードされたビットマップはフルカラーモードになっています。 |
ステップ3:
|
画像は外観の面で変わっていませんが、わずか15色のパレットがフルカラーモードの代わりに使用されているので、少ないメモリを使用しています。これら15色は、実際にこの特定の画像を表示するために必要な唯一のものです。 |
ステップ4:
|
サポートされているビットマップ形式
次の表は、Cのファイルのための現在利用可能な出力フォーマットを示します。
フォーマット | 色深度 | 圧縮 | 透明性 | パレット |
---|---|---|---|---|
1ピクセルあたり1ビット | 1bpp | ない | はい | はい |
1ピクセルあたり2ビット | 2bpp | ない | はい | はい |
1ピクセル当たり4ビット | 4bpp | ない | はい | はい |
1ピクセルあたり8ビット | 8bpp | ない | はい | はい |
圧縮された、RLE4 | 4bpp | はい | はい | はい |
圧縮された、RLE8 | 8bpp | はい | はい | はい |
ハイカラー555 | 15bpp | ない | ない | ない |
ハイカラー555、赤と青はスワップ | 15bpp | ない | ない | ない |
ハイカラー565 | 16bpp | ない | ない | ない |
ハイカラー565、赤と青はスワップ | 16bpp | ない | ない | ない |
ハイカラー565、圧縮された | 16bpp | はい | ない | ない |
ハイカラー565、赤と青が入れ替わっ、圧縮された | 16bpp | はい | ない | ない |
トゥルーカラー888 | 24bpp | ない | ない | ない |
アルファブレンディングとトゥルーカラー8888 | 32bpp | ない | はい | ない |
アルファチャンネル、圧縮された | 8bpp | はい | はい | ない |
アルファチャンネル、圧縮されたとのトゥルーカラー | 32bpp | はい | はい | ない |
パレットの情報
ビットマップのパレットは、24ビットRGBカラーエントリの配列です。1から色深度を持つビットマップ - 8 bppはと(デバイス独立ビットマップ、DIB)やパレットの情報(デバイス依存ビットマップのDDB)なしで保存することができます。
透明性
パレットベースのビットマップが透明のビットマップに変換することができます。透明性は、インデックス0を持つ各ピクセルは、任意の出力を生成しないことを意味します。コマンドの画像/透明性透明性のために使用されるべき色を選択するために使用することができます。
アルファブレンディング
アルファブレンディングは、半透明の効果を作成する背景と画像を組み合わせる方法です。ピクセルのアルファ値は透明度が決まります。ビットマップを描画後のピクセルの色は元の色とビットマップのカラー値のブレンドです。emWinでは、論理的な色は32ビット値として処理されます。下位24ビットは色の情報のために使用され、上位8ビットがアルファ値を管理するために使用されます。0のアルファ値は、イメージが不透明であると0xFFの値が完全に透明を意味します。BMPやGIFファイルはサポートしていないのに対し、PNGファイルをブレンドアルファは、アルファブレンディングをサポートしています。アルファブレンディングを使用してビットマップファイルを作成する最も簡単な方法は、PNGファイルをロードすることです。BMPおよび/またはGIFファイルを扱うときにビットマップコンバータは最初のアルファ値に関する情報がありません。アルファマスクを持つビットマップを作成するための最も推奨される方法は、PNGファイルをロードしています。
色の変換
ビットマップの色形式を変換するための主な理由は、メモリ消費量を削減することです。これを行う最も一般的な方法は、画像で使用されている色だけを含むように特定のビットマップのパレットをカスタマイズする上記の例のようにオプション情報パレットを、使用することです。それはまだ完全に画像をサポートしながらできるだけパレットのように小さくするためにはフルカラービットマップの場合に特に便利です。ビットマップファイルをビットマップコンバータでオープンされると、単に画像を選択/メニューから/ベストパレットに変換します。特定のアプリケーションでは、画像の下にあるメニューから選択した固定カラーパレットを使用する/に変換する方が効率的かもしれません。例えば、フルカラーモードでビットマップが4つしかグレースケールをサポートするディスプレイ上に表示されると仮定します。それが唯一のディスプレイ上の4つのグレースケールとして表示されるので、それは、元の形式でイメージを維持するためのメモリの無駄です。フルカラービットマップは最大効率の4つの階調、2bppビットマップに変換することができます。次のように変換するための手順は、次のようになります。
前の例のステップ1および2のようにビットマップコンバータがオープンされ、同じファイルがロードされます。
ビットマップコンバータは、ロードされたビットマップが表示されます。 |
|
画像の選択/ Into/Gray4に変換します。 | |
ビットマップコンバータは、変換後のビットマップが表示されます。 この例では、イメージがわずか4グレースケールのパレット以来、少ないメモリを使用しているが、フルカラーモードの代わりに使用されます。ターゲットの表示がわずか4グレースケールをサポートしている場合は、それだけでメモリを無駄にするように高画素の深さを有するの無駄がありません。 |
生成、Cのストリームファイル
ACストリームファイルは、Cのファイルと同じ情報で構成されています。Cのファイルに反してデータストリームはどこにでも配置することができ、プロジェクトをコンパイルまたはリンクする必要はありません。Cのファイルのために説明するすべてのサポートされている出力形式は、C言語のストリームファイルにもご利用いただけます。emWinは、データストリームと直接描画データストリームからビットマップの作成をサポートしています。
圧縮されたビットマップ
ビットマップコンバータとその結果のソースコードファイル内のビットマップのemWinサポートランレングスエンコーディング(RLE)圧縮。ビットマップが等しい色の画素の多くの水平方向の配列が含まれている場合はRLE圧縮方法が最も効率的に動作します。効率的に圧縮されたビットマップは、かなりの量のスペースを節約します。彼らは通常、同一のピクセルのシーケンスを備えていないため、圧縮は写真画像にはお勧めしません。それは圧縮された画像は、表示するために若干時間がかかることにも留意すべきである。あなたがRLE圧縮を使用してビットマップを保存する場合は、Cのファイルとして保存するときに圧縮された出力形式のいずれかを選択することによって行うことができます。"パレットとC、圧縮された"または"パレットのないC、圧縮を"。圧縮されたビットマップを表示するために必要な特別な機能もないので、非圧縮のビットマップを表示すると同じように動作します。
圧縮率
達成される圧縮の比率が使用されるビットマップによって異なります。画像内のより多くの水平方向の均一性は、よりよい比率はなります。ピクセルあたりのビットの数値が大きいほど、圧縮度が高くなります。前の例で使用されるビットマップでは、画像内のピクセルの総数は(200 * 94)= 18800です。2ピクセルが1バイトに格納されるため、画像の総非圧縮サイズは18800 / 2 = 9400バイトです。この特定のビットマップの合計圧縮サイズは18800ピクセル(この章の末尾の例を参照)のための3803バイトです。圧縮の比率は、したがって、9400 / 3803 = 2.47として計算することができます。
カスタムパレットを使用する
カスタムパレットにビットマップを変換するとパレットの情報なしにそれらを保存すると、メモリを節約することができますし、ビットマップ描画操作のパフォーマンスを向上させることができます。
より効率的なメモリ使用率
デフォルトごとに各ビットマップは、独自のパレットが含まれています。どんな小さなビットマップは256色までで、大きなパレットを含めることができます。多くの場合、パレットのごく一部がビットマップで使用されます。これらのビットマップの多くを使用する場合はパレットで使用されるメモリ量は急速に成長することができます。利用可能なハードウェアのパレットにemWinによって使用されるビットマップを変換するとパレットの情報なし(D)evice(D)ependent(B)itmapsとしてそれらを保存するのであればそれははるかにROMを保存することができます。
優れたビットマップの描画性能
emWinはビットマップを描画する前に、利用可能なハードウェアのパレットに各デバイス独立ビットマップのパレットを変換する必要があります。これは、ビットマップファイルのピクセルのインデックスは、デバイス独立ビットマップのパレットにしていない利用可能なハードウェアのパレットへのインデックスであるため、要求される。DDBにビットマップを変換すると、実行時に、色変換が必要と描画を高速化されていないことを意味します。
コマンドラインの使い方
それは、コマンドプロンプトを使用してビットマップコンバータで動作することも可能です。ビットマップコンバータのメニューで使用可能なすべての変換関数は、コマンドとして利用、および関数の任意の数は、1つのコマンドラインでのビットマップに対して実行することができる。
有効なコマンドラインオプション
次の表は、すべて許可されているビットマップコンバータのコマンドを示します。また、BmpCvtを入力することにより、いつでも見ることができる - ?コマンドプロンプトで。
コマンド | 説明 |
---|---|
- convertintobw | BWへの変換 |
- convertintogray4 | Gray4に変換する |
- convertintogray16 | Gray16に変換する |
- convertintogray64 | Gray64に変換する |
- convertintogray256 | Gray256への変換 |
- convertinto111 | 111に変換する。 |
- convertinto222 | 222に変換する。 |
- convertinto233 | 233に変換する |
- convertinto323 | 323に変換する |
- convertinto332 | 332に変換する。 |
- convertinto8666 | 8666への変換 |
- convertintorgb | RGBへの変換 |
- convertintobestpalette | 最高のパレットに変換 |
- convertintocustompalette |
カスタムパレットに変換 |
目的のカスタムパレットのユーザー指定のファイル名 | |
- 出口 | 自動的にPCのプログラムを終了する |
- fliph | イメージを水平方向に反転 |
- flipv | イメージを垂直方向に反転させる |
- helpと | このボックスを表示する |
- invertindices | インデックスを反転 |
- rotate90cw | 時計回りに90度で画像を回転させる |
- rotate90cc | 反時計回りに90度で画像を回転させる |
- rotate180 | 180度画像を回転させる |
- [名前を付けて保存 |
ファイル名としてファイルを保存 |
ファイルを含むユーザー指定のファイル名 拡張子。 |
|
次のように1〜6の整数である必要があります: 1:パレット(。cファイル)とC 2:Windowsビットマップファイル(bmpファイル) 3:Cのストリーム(DTAファイル) 4:GIF形式(GIFファイル。) |
|
ビットマップ形式を指定します(場合にのみ型== 1): 1:1ピクセルあたり1ビット 2:1ピクセルあたり2ビット 4:ピクセルあたり4ビット 5:1ピクセルあたり8ビット 6:RLE4圧縮 7:RLE8圧縮 8:ハイカラー565 9:ハイカラー565、赤と青が入れ替わっ 10:ハイカラー555 11:ハイカラー555、赤と青が入れ替わっ 12:RLE16圧縮 13:RLE16圧縮、赤と青はスワップ 17:トゥルーカラー24bppのを このパラメータが指定されていない場合は、ビットマップ コンバータは、次のデフォルト形式を使用して 色数の依存性に ビットマップの: 色の数<= 2="" 1="" 4="" 16="" 256="" 8="" rgb="" 565="" br=""> |
|
パレットの有無にかかわらず、ビットマップを保存します(型のみ場合== 1) 0:パレットで保存ビットマップ(デフォルト) 1:パレットせずにビットマップを保存 |
|
- 透明性の | 透明色を設定します。 |
透明色として使用されるRGBの色 | |
- ? | このボックスを表示する |
変換後のビットマップの例
ビットマップコンバータの使用のための典型的な例は、C言語のビットマップに貴社のロゴの変換となります。下の図の例のビットマップをもう一度見てください。
ビットマップは、ビットマップコンバータに読み込まベストパレットに変換され、"パレットを持つC"として保存されます。結果として得られるCのソースコードは(一部のデータがスペースを節約するために示されていない)下に表示されます。
結果のCコード(ビットマップコンバータによって生成される):
/************************************************* ******************** * SEGGER MICROCONTROLLER SYSTEME GmbHのリアルタイムマイクロコントローラアプリケーション用* *ソリューション* * www.segger.com * ********* ************************************************** *********** * * emWin V3.76用* *ビットマップの変換によって生成されたC -ファイル。*コンパイルされた2004年2月10日、午前九時26分47秒*(C)1998〜2004 SEGGERマイクロSYSTEME GmbH社* *************************** ******************************************* * *ソースファイル:テスト*外形寸法:200 * 94 * NumColors:15 * **************************************** ****************************** * /##GUI_CONST_STORAGE"GUI.h"#ifndefの#を含む"stdlib.hを"含まれていますGUI_CONST_STORAGE constを定義する#endifの/ *パレット以下は、パレットテーブルのエントリです。すべてのエントリは32ビット値です(24ビットが実際に使われているかの)下位8ビットは、中間の8ビットが緑のコンポーネントを表し、赤の成分を表す最高の8ビットが(使用される24ビットの)青成分を表すとしては次のとおりです。0xBBGGRR * /静的GUI_CONST_STORAGE GUI_COLOR ColorsLogo [] = {0xFFFFFFに、0xFF0000など、000000、0x0F0F0F、0x1C1F23、0xC3C3C3、0x020202、0xFBEFEF、0xFF3B3B、0x5A5B5E、0x909294、0xFFC1C1、0xD0D1D1、0xFF6868、0xFF9393};静的GUI_CONST_STORAGE GUI_LOGPALETTE PalLogo = {15、/エントリ数* / 0、/ *なし透明度* /&ColorsLogo [0]}; 0x00の静的GUI_CONST_STORAGE unsigned char型acLogo [] = {0x00は、、0xC9、0x43この、... 、は0x00、/ *すべてのデータを* / 0x00を、0x0Aに、0x32、0x22を、示されている... 、この例では0x00、/ * * /は0x00、0x92、0x22、0x22、... 、は0x00、0x0Aに、0x22、0x22、0x22、... 、0xA0に、0xC6、0x22、0x23の、0x95、... 、0x6C、。。。、0xA5、0x23の、0x22、0xC6 ... 、0x6C、0x0Aに、0x22、0x22、0x22、... 、0x90を、0x07は、0x92、0x22、0x22、... 、0x70、0x00の、0x7A、0x32、0x22、... 、は0x00、0x00を、0x00の、0xCA、0x44の、... 、は0x00}; GUI_CONST_STORAGE GUI_BITMAP bmLogo = {200、/ * XSIZE * / 94、/ * YSize * / 100、/ * BytesPerLine * / 4、/ * BitsPerPixel * / acLogo、/ *画像データへのポインタ(インデックス)* / &* /をパレットPalLogo / *ポインタ}; / *ファイルの*** END *** * /