web-dev-qa-db-ja.com

C / C ++画像の読み込み

私はゲームエンジンに取り組んでいて、複数の形式のイメージローダーを作成するにはあまりにもやりすぎているので、私の質問は次のとおりです。イメージファイルをロードするための抽象化されたイメージロードライブラリはありますか?ファイルをロードして、ピクセルの配列を使用して画面にスプラットするだけです。

13
Jookia

私はいつも CImg のファンです。使い方はとても簡単です。別のユーザーは 答え も気に入っていました。回答で投稿したのと同じ例を投稿して、ピクセルと寸法情報へのアクセスがいかに簡単かがわかるようにします。

CImg<unsigned char> src("image.jpg");
int width = src.width();
int height = src.height();
unsigned char* ptr = src.data(10,10); // get pointer to pixel @ 10,10
unsigned char pixel = *ptr;
23
NG.

FreeImage は優れたオープンソースライブラリです

これはサンプルコードです、データは "out.data()"でアクセスできます

FREE_IMAGE_FORMAT format = FreeImage_GetFileTypeU(filename.c_str());
if (format == FIF_UNKNOWN)      format = FreeImage_GetFIFFromFilenameU(filename.c_str());
if (format == FIF_UNKNOWN)      throw(std::runtime_error("File format not supported"));

FIBITMAP* bitmap = FreeImage_LoadU(format, filename.c_str());
FIBITMAP* bitmap2 = FreeImage_ConvertTo32Bits(bitmap);
FreeImage_Unload(bitmap);

std::vector<char> out(FreeImage_GetWidth(bitmap2) * FreeImage_GetHeight(bitmap2) * 4);
FreeImage_ConvertToRawBits((BYTE*)out.data(), bitmap2, FreeImage_GetWidth(bitmap2) * 4, 32, FI_RGBA_RED_MASK, FI_RGBA_GREEN_MASK, FI_RGBA_BLUE_MASK, true);

FreeImage_Unload(bitmap2);
11
Tomaka17

Boost's GIL があり、これはもともとアドビによって開発されました。これは最も直感的なものではないかもしれませんが、確かに最も完全で強力なライブラリの1つです。

4
Gianni

OpenGLを使用している場合、そのスタイルと規則は他のどのライブラリよりもOpenGLに準拠しているため、 DevIL が適切な選択です。セットアップは比較的簡単で、複数のフォーマットにも対応しています。

Wussについての1つのこと。十分にテストされて時間を節約できる、動作するサードパーティのコードを設定するのはいいことですが、イメージのロードのしくみと、そのしくみがなぜ機能するのかを学ぶことについても、言いたいことがあります。本当に上手になりたいなら、一からやり直す必要があると思います。最終的にサードパーティのコードを使用することになります。

3
Zoli

Simple DirectMedia Layer のサブプロジェクトである SDL_Image をご覧ください。これは、いくつかの異なる画像フォーマットをロードするための簡単な抽象化として機能します。 SDLはCで記述されていますが、CまたはC++コードのどちらでも簡単に使用できます。

2

さらに別の可能性(主に、Windows専用ではない場合)は CXImage です。他の多くのものよりも明らかに優れているのは、重要な場合に備えて、多くのCamera Rawフォーマットをサポートしていることです。

1
Jerry Coffin

OpenImageIO TIFF、JPEG/JFIF、OpenEXR、PNG、HDR/RGBE、ICO、BMP、Targa、JPEG-2000、RMan Zfile、FITS、DDS、Softimage PIC、PNMなど、さまざまなファイル形式をサポート、DPX、Cineon、IFF、Field3D、Ptex、Photoshop PSD、Wavefront RLA、SGI、WebP、GIF

0
Vertexwahn