aardio 文档
aardio 范例: WebView2 网页通过获取本地二进制字节数组(buffer)内存加载本地图像
import win.ui;
/*DSG{{*/
var winform = win.form(text="WebView2 网页通过获取本地二进制字节数组(buffer)内存加载本地图像";right=757;bottom=467)
winform.add()
/*}}*/
import web.view;
var wb = web.view(winform);
wb.external = {
getImageByteArray = function(){
import gdip.snap;
//截屏
var bmp = gdip.snap();
//可以用 raw.buffer("字符串") 将字符串转换为 buffer
//保存为 buffer 类型(二进制字节数组)内存数据。
var buffer = bmp.saveToBuffer("*.jpg")
return buffer;
};
setTypedArrayByRef = function(jsUint8Array){
print("数组长度",jsUint8Array.size);
// JS 数组起始索引为 0
print("数组元素",jsUint8Array[0]);
};
setTypedArrayByValue = function(jsUint8Array){
//已经转换为 aardio 数组,直接用 # 操作符取数组长度
print("数组长度",#jsUint8Array);
// aardio 数组起始索引为 1
print("数组元素",jsUint8Array[1]);
};
}
wb.html = /***
<img id="outImage">
<script>
(async()=>{
var nativeByteArray = await aardio.getImageByteArray( );
const uint8Array = new Uint8Array(nativeByteArray);
const blob = new Blob([uint8Array], { type: 'image/jpeg' });
const imageUrl = URL.createObjectURL(blob);
document.getElementById('outImage').src = imageUrl;
//类型化数组的内置属性在本地对象中被隐藏,改用自定义的名称传数组长度
uint8Array.size = uint8Array.length;
aardio.setTypedArrayByRef(uint8Array);
/*
允许类型数组转换为 aardio 数组(传值)。
这个方法最好不要用,就算你写在后面,也会改变前面代码的行为。
*/
//chrome.webview.hostObjects.options.shouldPassTypedArraysAsArrays = true
//aardio.setTypedArrayByValue(uint8Array);
})()
</script>
***/
winform.show();
win.loopMessage();
Markdown 格式