SDL2除了自己本身的SDL2库,官方和其他开发者为了补充相应的内容,给出了很多有用的库。这里就来看一下适用范围最广的SDL2_image库。
所有的官方拓展库可以在这里找到。
SDL2_image库
由于SDL2本身只有SDL_LoadBMP()
函数,只能够载入位图,所以官方给出了SDL_image
库,允许SDL2加载其他各种格式的图片资源。可以加载BMP, GIF, JPEG, LBM, PCX, PNG, PNM, SVG, TGA, TIFF, WEBP, XCF, XPM, XV
。
其文档在这里
使用流程
使用的流程十分简单:
- 首先使用
IMG_Init()
函数初始化SDL_Image库。这里也需要像SDL_Init()
函数一样给入flag。flag有IMG_INIT_JPG, IMG_INIT_PNG, IMG_INIT_WEBP, IMG_INIT_GIF
。可以使用按位或来传入多个。默认可以载入位图。 - 使用
IMG_Load()
函数载入图像。 - 关闭SDL_image库
IMG_Quit()
主要函数
主要的函数分为两种:载入图片的函数,判断图片函数,存储图片函数和错误处理函数。
载入图片
一般最通用的函数是IMG_Load()
,可以载入你在IMG_Init()
里面立的flag相关的图片。
或者使用IMG_Load_RW()
来从raw资源载入图片。raw资源可以通过SDL_RWFromFile()
函数获得。但是一般不这样做(直接IMG_Load不就行了)。
而且还有各种IMG_LoadXXX_RW()
函数用于读取特定格式的raw资源,比如IMG_LoadPNG_RW()
函数。这些函数基本上没什么用。
判断图片资源
所有的判断函数都是IMG_isXXX()
形式,其中XXX是你的图片格式的大写。比如IMG_isCUR(),IMG_isJPG()
。所有的判断函数的参数都是SDL_RWops*
,可以使用SDL_RWFromFile()
获得。
这些图片判断函数的作用在于,如果你的图片的后缀名不是平常的后缀名(比如.png被改成.xxx了),你可以使用这些函数判断你的图片的类型。
存储图片
你可以使用IMG_SaveJPG(), IMG_SavePNG()
函数来保存图片。对于jpg图片会有一个额外的“质量”参数。
需要注意的是存储图片的函数在文档里没有被提及,但是确实是存在的。
错误处理
通过IMG_SetError(), IMG_GetError()
函数获得和设置错误。