1

私はC++で基本的なコンソールベースの画像処理ツールを作成していますが、これまでのところ、RGB値を操作する関数を非常に簡単に作成できることがわかりました。

今やりたいのは、画像をぼかしたり、シャープにしたり、サイズを変更したりするための関数を作成することです。これを行うには、新しいピクセルを新しい画像にマッピングする必要があることを私は知っています。この組み込みのSDL関数を使用して、新しいピクセルをマップする予定の新しい空白のサーフェスを作成するのに少し問題があります。

SDL_Surface *SDL_CreateRGBSurface(Uint32 flags, int width, int height, int depth, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask);

私のプログラムの残りの部分はではUint8*なくを使用しUint32ているので、これが手続きにどのように影響するかはわかりません。また、すべてのパラメーターと、それらが何のために使用されているか、つまりフラグと深さについて100%確信しているわけではありません。

この関数を使用して新しいSDL_Surfaceを適切に作成する方法について、誰かにアドバイスをいただけますか?

4

1 に答える 1

7

ここにあなたが見ることができるコード例があります:http ://wiki.libsdl.org/moin.fcg/SDL_CreateRGBSurface

具体的には、探している行は次のとおりです。

surface = SDL_CreateRGBSurface(0,width,height,32,0,0,0,0);

フラグはさまざまな用途に使用されますが、0に設定できるはずです。深度に関しては、これはあなたが見ているピクセルあたりのビット数を指します。したがって、この場合、8 * 4は32(アルファを含む)です。

すでに画像が読み込まれていると思います。その場合は、このロードされた画像を使用して、代わりにピクセルあたりのビット数を取得できます。

surface->format->BitsPerPixel
于 2013-03-12T17:15:21.007 に答える