ビットマップをロードし、すべてのケース (rle、b/w ビットマップなど) を処理する優れた C サンプルを知っている人はいますか?
コードはクロスプラットフォームである必要があります。
ありがとう。
ビットマップをロードし、すべてのケース (rle、b/w ビットマップなど) を処理する優れた C サンプルを知っている人はいますか?
コードはクロスプラットフォームである必要があります。
ありがとう。
SDLイメージのようなライブラリを使用することをお勧めします
最小限の bmp ローダーを探している場合は、このリンクから、BMP 形式、データ構造、サンプル コードについて知る必要があるすべての情報が得られます。ライブラリに依存せずに読み込むことができます。
http://paulbourke.net/dataformats/bmp/ .
また、読み込まれた BMP を開いている gl テクスチャで表示するためのコードも含まれているため、必要なものはほとんどすべて...
Intel が開発した OpenCV Library をチェックしてください。
これを行うには、外部ライブラリが必要です ( ImageMagickをお勧めします)。ImageMagick の Web サイトには、ドキュメントとサンプルも含まれています。
Chris Backhouse は、機能的な小さな BMP ローダーを作成しました (OpenGL テクスチャとして使用することを視野に入れています)。これは C ではなく C++ であり、クロス プラットフォームではないことを彼は認めています。ただし、小さくてわかりやすいので、ここにリンクを追加すると思いました。
BMP ファイル形式に縛られている場合は、自分でヘッダーを見てピクセルを取得するのは非常に簡単です。 このグーグル検索を参照してください。より興味深い試合の 1 つがここにあります。最も直観に反する部分は、ピクセルのすべての行が 4 バイトでアラインされていることです。また、圧縮された BMP にも注意してください... (私の経験では、多くのサードパーティ製ツールが圧縮された BMP に問題を抱えているため、遭遇するいくつかのライブラリも..)
BMP ファイル形式に縛られていない場合は、libpng をお勧めします。マニュアルには、かなり明確なサンプルコードがいくつか提供されています。
他の人が示唆したように、SDL のような外部ライブラリを使用することをお勧めします。何かを学び、自分でやりたい場合は、この非常によく似た質問に対する私の回答を参照してください: C でGBA 形式に変換するために 24bpp ビットマップから各ピクセルの RGB 値を取得する場所では、各ピクセルを出力する C コードを見つけることができます。ウィキペディアの bmp ファイルに関するページを参照してください。非常に優れているためです。