我试图使用TS 2.8的TextDecoder接口将Uint8Array转换为字符串,以便在Web UI中显示图像。我尝试使用的方法如下:
displayImage(image: Uint8Array): string {
var fileString = new TextDecoder("utf-8").decode(image);
return 'data:image/jpeg;base64,' + fileString;
}
当我尝试编译时,我收到“'TS2304:找不到名称'TextDecoder'”。
我正在运行TS 2.8,所以根据this,我尝试使用内置接口进行操作。是否需要定义提供者?任何帮助表示赞赏。
编辑:下面的tsconfig.json:
{
"compileOnSave": false,
"compilerOptions": {
"baseUrl": "./",
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es5",
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2017",
"dom"
]
}
}
答案 0 :(得分:0)
首先,确保在tsconfig中包含“ dom”库。如果提供tsconfig,则可能更容易确定。
第二,您的数据URI需要base64编码的输出,而不是解码为UTF-8的JPEG字节(如果它甚至是有效的UTF-8)。有关具体操作,请参见this question。
第三,如果您尝试将Uint8Array显示为jpeg图像,则Blob可能是一种更好的方法(代码是手写的,未经测试):
var blob = new Blob([image], {
type: 'image/jpeg'
});
var url = URL.createObjectURL(blob);
return url;