游戏项目是基于cocos2d-x开发的,但线上发现一个bug就是玩家在设置完自定义头像后直接闪退。凡是在设置该玩家头像的地方,游戏就直接闪退。最终定位到的问题是图片数据源有问题,我的机器是win7,图片能预览,但同事xp系统该图片是无法预览的,默认的系统自带的图片查看工具也无法显示图片。
把图片拉到sublime text中,查看文件二进制,发现它并非一个完整的jpeg格式
没有jpeg格式的结束标识0xff 0xd9
我在windows下调试代码,发现是在CCImageCommon_cpp.h中的_initWithJpgData方法调用jpeg_finish_decompress函数时程序直接退出了
return bRet;
}
}
后面我用jpegtran(https://github.com/imagemin/jpegtran-bin)工具复制有问题的图片时, 也提示错误了
参考文章:
[2] JPEG File Layout and Format
解决方案可以参考这篇文章:libjpeg解压损坏文件时的错误处理