unity将截图转化为png后再转化为base64后通过网络传输后,反序列化后不能转回原图片

其他协议都没有问题 就是将图片转base64通过json在网络传输到服务器后convert.frombase64后不一致了 本机上运行服务器和客户端没问题其他数据也能准确得到 但是其他机器做客户端就不行 客户端传入的数据长度要长 服务器接收的数据长度短 所以字符串长度不一致

这个问题可能是由于不同机器上的编码方式不同导致的。在将图片转化为 base64 字符串时,需要注意编码方式应该为 UTF-8。如果在不同机器上使用的编码方式不同,可能会导致 base64 字符串的解码结果不一致,从而无法将其转回原图片。

可以尝试在将图片转化为 base64 字符串时,使用以下代码指定编码方式为 UTF-8:

string base64String = Convert.ToBase64String(imageBytes, Base64FormattingOptions.None);
byte[] base64Bytes = Encoding.UTF8.GetBytes(base64String);
string base64Encoded = Encoding.UTF8.GetString(base64Bytes);

在接收到 base64Encoded 字符串后,可以使用以下代码将其转回原图片:

byte[] imageBytes = Convert.FromBase64String(base64Encoded);
Texture2D texture = new Texture2D(2, 2);
texture.LoadImage(imageBytes);

如果还是无法解决问题,可以尝试使用其他编码方式,例如 ASCII 或 Unicode,看是否能够解决问题

首先对比看看传输前图片base64字符串与接收到的base64字符串是否一致