我正在用 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 给我一些建议吗?
最佳答案
这里有一个代码示例,您可以查看: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
关于c++ - 使用 SDL_CreateRGBSurface 创建新的 SDL_Surface 时遇到困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15367275/