思路是这个思路,我这边也是这么去想的。但是都是问题,怎么判断图片是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的过程也受到影响。目前感觉没有什么好的办法了,太头疼了
求官方大佬帮忙看看啊,有没有什么方案让这种类型的图片展示出来,或者再次一点捕获到这种类型的图片也行啊,太头痛了
写个shader 去网上找 xmyk 转 rgba 的公式,自己转?
思路是这个思路,但是实现上还是有难度的,感觉解决不了了
让后端存储图片到图床之前,使用 ImageMagick 转到 RGB 颜色空间,这样就能避免这个问题了, 已经传上去的让后端也转一下,更新下图床链接
后端链路非常长,数据节点都在不同图床上,处理起来很麻烦,所以不得不前端来处理,如果后端处理就没有这个问题了
