SDL Image介绍

介绍下一个轻量级图片解码库: SDL Image

对比ImageMagic的繁杂,我更喜欢SDL Image。


支持格式:(选自Readme)

BMP, PNM (PPM/PGM/PBM), XPM, LBM, PCX, GIF, JPEG, PNG,TGA, and TIFF formats.


06年做DLNA时候,那时经验不足,自己造了一堆轮子,GIF,JPEG,PNG,TIFF均自己手动解码。

现在回过头来看,还是经验和眼界的不足,当初2个人做了三个月,现在可能自己一个人一周就搞定了。


使用:(需要先安装SDL)

#include "SDL_image.h"   


初始化:

IMG_Init(IMG_INIT_JPG);


数据输入:

SDL_RWops

对于普通文件,可以调用IMG_Load自动生成。

对于内存或网络文件,可能就需要自己封装I/O接口了。这方便都不是很难。觉得有难度的,可以自己去参考ffmpeg的URL Protocol代码

实现对 UDP、HTTP,RTP的封装。甚至可以参考百度云的API,实现对云文件的封装。


注意:

IMG_Load并不提供Cache机制,对于大文件来说,这个接口基本等于没有。

建议自己设计RingBuf,根据平台CPU Cache大小进行优化。


解码:

对于PNG来说,解码主要在IMG_png.c文件。

通过这个文件可以迅速学会libpng的封装技巧。

IMG_LoadPNG_RW 


输出:

SDL_Surface


不足:

1> 没有考虑大文件情况,在嵌入式系统,可能会导致内存分配失败。

需要手动修改代码。

2> 没有提供文件信息解析API。


当然,对于我们来说,没必要吹毛求疵,自己动手修改代码,很快就能解决上面2个不足。

Permission is granted to anyone to use this software for any purpose,
  including commercial applications, and to alter it and redistribute it
  freely, subject to the following restrictions:

给了我们充分的发回空间。

你可能感兴趣的:(SDL Image介绍)