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 格式