2013年1月6日星期日

让Qt4支持psd与webp格式的图片

    Qt4的图片格式支持是通过插件形式的,想要支持一种新的图片格式,只要继承QImageIOPlugin和QImageIOHandler两个类,在里面实现对这种图片格式的解析,保存到QImage对象即可。编译时则在.pro文件中指定TEMPLATE为lib,生成的库文件可以放到Qt安装目录下的plugins\imageformats目录,在发布程序时则随其他图片格式插件一起发布。这样QImageReader会自动加载插件,就可以正确显示图片了。
    Qt4想支持psd图片格式,可以使用libqpsd这个库。根据作者的说法,目前只支持读取压缩格式为RLE,色彩模式为RGB(8Bpp per channel only)的psd图片。实际使用中发现加载psd图片时速度比较慢,这是因为作者的代码中使用了太多的循环,其中有些处理比较复杂。经过我的优化,将原先的循环次数减少为原来的一半,这样速度可以提高一倍。实际使用效果也证明了这一点。我修改过的库源码放在这里:github.com/yuezhao/libqpsd
    至于webp格式支持,原先我是参考了以下内容:qwebp.7z 以及qiviewer的源码,自己写了个webp插件。但是qiviewer的libwebp代码比较旧,不支持透明通道。最后在github上找到了同样开源的qt_webp,直接编译它的代码就能用了,省了不少力气。
    EzViewer还在更新中,接下来会让它支持更多图片格式,更加好用!


文档信息