我想将 REST API 中请求的图像解析为 base64 字符串。
首先......我想,这很容易,只是window.btoa()
为了这个目的使用函数。
当我尝试在我的应用程序的这一部分执行此操作时:
.done( function( response, position ) {
var texture = new Image();
texture.src = "data:image/png;base64," + window.btoa( response );
我遇到了下一个错误:未捕获的 InvalidCharacterError:无法在 'Window' 上执行 'btoa':要编码的字符串包含超出 Latin1 范围的字符。
正如我在这里读到的:javascript atob 返回“字符串包含无效字符”
出现问题的原因是newlines in the response
,这就是window.btoa()
失败的原因。任何二进制图像格式当然都会有换行符......但是从上面的链接中,建议是删除/替换这些字符 - 对我来说是一个坏建议,因为如果从二进制图像中删除/替换一些字符,它只会是损坏。
当然,可能的替代方案与 API 设计有关: - 添加一些函数,返回 base64 表示 - 添加一些函数,将 url 返回到图像
如果我不修复它,我将从服务器返回base64表示,但我不喜欢这种方式。
是否存在某种方法来解决我从响应中处理二进制图像的问题,如上面屏幕截图部分所示,不是吗?