FC2ブログ

ホーム > 2010年08月

2010年08月月度記事一覧

DIBファイルの書き込み



DIBデバイス独立ビットマップ)をファイルに書き込む場合は、以下のような流れになります。

  1. DIBハンドルからDIBSECTION構造体を取得し、必要な各値を算出する。
  2. BITMAPINFO構造体のサイズを算出する。
  3. BITMAPFILEHEADER構造体をファイルに書き込む。
  4. BITMAPINFOHEADER構造体をファイルに書き込む。
  5. カラーテーブルがあればファイルに書き込む。
  6. マスクビットフィールドがあればファイルに書き込む。
  7. 圧縮形式に従ってピクセルビットをファイルに書き込む。


...続きを読む

DIBのビット深度の変更



DIBビット深度の変更は以下のような流れになります。

  1. ビットマップハンドルからDIBSECTION構造体を取得し、幅と高さを算出します。
  2. BITMAPINFO構造体を作成する。
  3. 空のDIBを作成する。
  4. DIBビット深度を変換したピクセルビットを書き込む

...続きを読む

メディアンカット法による画像の減色



DIBのビット深度の変更」でのシステムパレットを使った減色処理では、使用できる色が固定されるため、どうしても不自然な色の画像になります。そこで今回はメディアンカット法を使った減色手法を紹介します。尚メディアンカット法での減色の手順は以下の通りです。

  1. 24ビットDIBRGBピクセルからYUVテーブルを作成する。
  2. メディアンカット法で色を分ける。
  3. 減色カラーテーブルを作成する。
  4. カラーテーブルYUV値をRGBに変換する。
  5. BITMAPINFO構造体を作成し、空のDIBを作成する。
  6. ピクセルデータDIBにコピーする。


...続きを読む

誤差分散法によるディザ合成



前回の「メディアンカット法による画像の減色」での減色処理ではどうしても色が少なくなるために、グラデーションが潰れて汚くなるのは避けられません。そこで画像に誤差分散法によるディザをかけることて、グラデーションをよりきれいに見えるようにします。

...続きを読む

ピクセルデータのランレングス圧縮



ピクセルデータランレングス圧縮は、以下のような流れになります。

  1. まずは絶対値モードとしてピクセルデータを読み込み、前のデータと比較して同値なら、取り込んだデータを絶対値モードとしてファイルに書き出してから、エンコードモードに切り替える。
  2. エンコードモードピクセルデータを読み込み、前のデータと比較して違いがあれば、取り込んだデータをエンコードモードとしてファイルにに書き出してから、絶対値モードに切り替える。
  3. どちらのモードも蓄えたピクセルデータの個数が255以上になったら、ファイルに書き出し絶対値モードに切り替える。
  4. 行末に達したら、蓄えたデータをファイルに書き出し、行末コード「0x00,0x00」を書き込む。
  5. 全部読み終わったら、終端コード「0x00,0x01」をファイルに書き込み終了する。

ランレングスデータの詳細については「ランレングス圧縮されたピクセルデータの解凍」をご参照ください。


...続きを読む

透過DIB画像の表示



透過DIB画像の表示には以下の2種類の方法があります。

  1. マスク画像を用いる方法
    まず画像の四隅の色から透過色を求めてマスク画像を作成し、このマスク画像で背景画像を理論積(AND)で切り取ります。次にマスク画像を反転してから前景画像上でマスクする部分を理論積(AND)で切り取り、最後にマスク部分を切り取った前景画像理論和(OR)背景画像に貼り付けます。

  2. アルファブレンド32ビットDIBを用いる方法
    まず背景画像から表示する画像の部分のコピーと表示する画像のコピーを作成します。次に背景画像前景画像アルファブレンド演算ピクセルビット毎に合成データを算出し、前景画像に戻します。最後に合成した前景画像背景画像に貼り付けます。

...続きを読む

すべての記事一覧

ホームへ戻る > 2010年08月

タグクラウド
ブロとも申請フォーム

この人とブロともになる

ブロとも一覧

このページの先頭へ戻る