一般头像都不能自己上传,用的微信QQ头像,他们都是自己转的png
我这边不是微信小游戏,我们是做直播平台的,目前没有办法让后端去更改这个问题,只能前端来修改,很特痛,所以还是想问问有没有好一点的办法,把cmyk模式修改成rgb色彩空间,又或者有其他办法能让ios13兼容展示这种类型的图片,急求解决方案啊,我这边卡这个问题卡了几天了,实在找不到更好的办法了,只好来求助官方
求助官方大大给一些意见啊,十万火急啊
武断的想了下,如果要改代码,那么要做的事
1.判断是否为cmyk
2.如果是,根据公式转换成rgb
原生的话建议在引擎里用gl处理,setImage那里貌似
思路是这个思路,我这边也是这么去想的。但是都是问题,怎么判断图片是cmyk模式。我这边也是没有找到很好的方案,而且这个是通过loadRemote的方式远程下载的头像数据,如何把图片像素每个读取出来,也是麻烦事。不过如果有办法能判断图片是否为cmyk模式,可能可以做一些算是异常处理。但是目前还是卡在这里。
文件都有文件头的,你根据PNG图片的文件格式,解析出来,再做进一步的解析和转换,应该可以。但是我觉得只要提示用户,图片不符合格式,让用户自己去转换就可以了。
谢谢回复,我这边也找到了这个代码,但是还是得想办法把loadRemote出来的头像数据逐个像素取出来
老哥这个是个思路。不行的,我们是直播内游戏,原生端展示不会有问题,只有在webview上有问题
我查了下2.4.3的C++引擎代码,Image::initWithJpgData函数里可以拿到jpeg_decompress_struct,这个info里有J_COLOR_SPACE标记是否为cmyk
谢谢大哥指点,但是目前只是wenview的端,目前还没有使用native相关的东西
我查默认的creater的engine代码里面确实没有找到相关的东西
没有发生错误,就是不展示,然后我这边看还会影响到其他resources资源加载接口,比如我loadRemote这张头像,然后设置不成功,我在其他地方调用resources.load其他3d模型资源,3d模型也因此加载不成功。所以try catch没有用。我试试你刚贴的exif.js行不行
2.4.x的js引擎解析纹理代码在parse.js的parseImage方法里
跟下载应该没有关系,因为我发现用loadRemote下载下来之后,返回的结果是正常的,应该是底层imageAsset转化成Texture2d的时候出现了一些问题,一直卡在那里或者底层报错了,导致影响了其他的资源load的过程也受到影响。目前感觉没有什么好的办法了,太头疼了
求官方大佬帮忙看看啊,有没有什么方案让这种类型的图片展示出来,或者再次一点捕获到这种类型的图片也行啊,太头痛了
