2013-03-12 152 views
1

我使用C++创建了基本的基于控制台的图像处理工具,并且迄今为止发现创建的函数对RGB值的操作非常简单!使用SDL_CreateRGBSurface创建新的SDL_Surface时遇到的困难

我现在想要做的是创建模糊,锐化和调整图像大小的函数。我知道为了做到这一点,我必须将新像素映射到新图像。我有一个有点问题,采用这种内置的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

有一个代码示例在这里,你可以看看:http://wiki.libsdl.org/moin.fcg/SDL_CreateRGBSurface

具体而言,您正在寻找的路线是:

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

该标志用于各种事情,但你应该能够将其设置为0罚款。至于深度,这是指您正在查看的像素数量。所以在这种情况下,8 * 4是32(包括alpha)。

我认为你已经加载了图像。如果是这样,您可以使用此加载的图像来获取每像素的位数:

surface->format->BitsPerPixel