我在qml中 用下面这段代码获取对网页发送get请求返回的二进制文件。let fetch =AJAX.fetch fetch("http://media-jiangxi-uz-yijia.jxoss.xstore.ctyun.cn/LF07/FACECONTROLPACK/3KSCA55502006GY/466e53165477637978737cdfc7c7f2e7?Signature=Sl5R%2BFlOSzYsZm4eVhLhRAoEV%2BU%3D&AWSAccessKeyId=t4tyhIuBkPHxmt5B69oy&Expires=1686196242") .then((res)=>{ let arrayBuffer = res.arrayBuffer(); tryTestImg=arrayBuffer ; 但是返回值被arrayBuffer()变成10进制的了,怎么改代码能让我获取能被图片形式显示的二进制文件,注意不能用Blob
时间: 2024-03-15 09:45:32 浏览: 54
你可以将获取到的二进制数据转换为 Base64 编码的字符串,然后在 QML 中使用 `Image` 组件加载该字符串来显示图片。以下是示例代码:
```javascript
let fetch = AJAX.fetch;
fetch("http://media-jiangxi-uz-yijia.jxoss.xstore.ctyun.cn/LF07/FACECONTROLPACK/3KSCA55502006GY/466e53165477637978737cdfc7c7f2e7?Signature=Sl5R%2BFlOSzYsZm4eVhLhRAoEV%2BU%3D&AWSAccessKeyId=t4tyhIuBkPHxmt5B69oy&Expires=1686196242")
.then((res) => {
let reader = new FileReader();
reader.onload = function() {
let base64Str = btoa(String.fromCharCode.apply(null, new Uint8Array(reader.result)));
// 在 QML 中使用该 base64Str 来显示图片
};
reader.readAsArrayBuffer(res);
});
```
其中,`btoa()` 函数可以将字符串转换为 Base64 编码的字符串,`Uint8Array` 可以将二进制数据转换为 8 位无符号整数数组。在 QML 中,可以通过设置 `source` 属性来加载该 Base64 编码的字符串:
```qml
Image {
source: "data:image/png;base64," + base64Str
}
```
阅读全文