みけCATのにっき(仮)
つれづれなるまゝに、日くらし、PCにむかひて、心に移りゆくよしなし事を、そこはかとなく書きつくれば、あやしうこそものぐるほしけれ。
(本当か!?)
出典

BMPファイル読み書きライブラリ

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

BMPファイル読み書きライブラリ

投稿記事 by みけCAT » 14年前

BMPファイルを読み書きし、使いやすい独自形式に変換するライブラリを作りました。
独自形式のデータとHBITMAPを相互変換することも出来ます。
よろしければ使ってみてください。

関数リファレンスを載せておきます。

CODE:

・bmp_t* bmpMake(int width,int height)
 BMPデータを作成します。
 作成に失敗するとNULLが返ります。

・bmp_t* bmpCopy(const bmp_t* source)
 入力したBMPデータと同じ内容のBMPデータを作成します。
 作成に失敗するとNULLが返ります。

・bmp_t* bmpLoad(const char* filename)
 BMPデータをファイルから読み込み、作成します。
 作成に失敗するとNULLが返ります。

・int bmpErrorDiffusion(bmp_t* bmp,int type)
 指定したBMPデータに対してError Diffusionを適用します。
 typeでカラータイプを指定します。
  BMP_256    256色です。
  BMP_16     16色です。
  BMP_MONO   モノクロです。
 強制的にデフォルトのカラーパレットが使用されます。
 成功すると1、失敗すると0が返ります。

・int bmpSave(const bmp_t* bmp,const char* filename,int type,int cttype,const rgb_t* ct)
 BMPデータをファイルに保存します。
 typeでカラータイプを指定します。
  BMP_FULL   フルカラーです。
  BMP_256    256色です。
  BMP_16     16色です。
  BMP_MONO   2色です。
 cttypeでカラーパレットの作成方法を指定します。
 typeがBMP_FULLの時は無視されます。
  COLORTABLE_DEFAULT      デフォルトのカラーパレットが使用されます。
  COLORTABLE_AUTODETECT   使われている色を含むカラーパレットを自動生成します。
  COLORTABLE_INPUT        カラーパレットをctで指定します。
 ctではカラーパレットをrgb_t型の配列で指定します。
 ctにはあらかじめ十分な要素数(色数以上)を確保してください。
 cttypeがCOLORTABLE_AUTODETECTでないときは無視されます。
 rgb_t型の構造は以下の通りです。
  typedef struct {
      unsigned char r;
      unsigned char g;
      unsigned char b;
  } rgb_t;
 成功すると1、失敗すると0が返ります。

・bmp_t* bmpLoadFromHandle(HDC hDC,HBITMAP hBmp)
 HBITMAPからBMPデータを作成します。
 hDCとhBmpで元となるデータを指定します。
 hBmpはデバイスコンテキストに関連付けられていない状態で渡してください。
 作成に失敗するとNULLが返ります。

・HBITMAP bmpSaveToHandle(HDC hDC,const bmp_t* bmp)
 BMPデータからHBITMAPを作成します。
 hDCでHBITMAPの元となるデバイスコンテキストを指定します。
 作成に失敗すると0が返ります。
 作成したHBITMAPはDeleteObject関数で破棄してください。

・void bmpFree(bmp_t* bmp)
 作成したBMPデータを開放します。
DLL本体、インポートライブラリ、DLLのソースコード、
サンプルアプリ、サンプルアプリのソースコードが入っています。

感想や意見、改善点などがありましたらお気軽にコメントを下さい。
「使ってみた」という報告だけでもありがたいです。
よろしくお願いします。
添付ファイル

[拡張子 zip は無効化されているため、表示できません]


コメントはまだありません。