native怎样把相机截屏生成的Uint8Array 转换为png的Base64字符串?

需求:native下,把相机截屏生成的Uint8Array 转换为png的Base64字符串 传给服务器

思路:
1、用相机拍照截屏,把渲染的RenderTexture 用这个api director.root.device.copyTextureToBuffers 读到buffers
2、把 buffers 转换为 png的Base64字符串
现在问题卡在第2步,尝试了一些算法把 buffers转成base64字符串,最后转出来的字符串都不是图片的base64.

请教大佬这个问题有解吗?

换个思路吧 你的逻辑需求我不知道是什么,但可以这样,不要在客户端转 你现在有了buffers 了吧,二进制的吧 ,好 这个整个传到服务器就是了 然后再需要什么转换 那边做试试

你首先要把截屏得到的rgba数组 encode成png的二进制数据,然后再转base64,
rgba encode你可以试试github的 upng

直接传 buffers 传输内容会比较大;

逻辑需求是 把截屏图片转base64 传给服务端 进行图片合规性检测;

至于为什么要进行合规性检测,是因为办理版号要求app 保存图片到相册前 要进行检测 :grimacing:

我很好奇为啥不直接把Uint8Array传给服务器,还要特意转成字符串,这不更简洁吗:face_with_raised_eyebrow:

unit8Array 是每个像素都有信息,转png后,png格式会压缩,所以最后的数据会小很多

要是能压缩那确实小,但是base64不是固定膨胀4/3倍了嘛,这转化出来的还真不好说。而且我说的是传输过程二进制流不是更合适

没有深入去比较大小,这里只讨论纯前端技术解决方案。
如果一定要纠结是前端做还是后端做。这种两端都能干的活,就看各团队 前后端打一架了,哈哈哈。

那倒是:rofl: