QML QT的grabToImage获取图像字节

时间:2019-01-11 16:30:29

标签: image qt go qml byte

由于某些原因,直接从qml中保存png无效。我在Golang应用程序的顶部有一个qml UI。当我这样做

source.grabToImage(function(result){
    console.log("image: ", result.url)
if (!result.saveToFile(urlNoProtocol)){
    console.error('Unknown error saving to',urlNoProtocol);
} else {
    console.log("saved to " + urlNoProtocol)
}

保存时出错。保存文件的位置来自fileDialog,我对其进行了预处理以删除file://,据了解,在使用saveToFile之前需要删除该qrc://。但是从上面的代码中我得到了一个未知的错误保存。

我怀疑这与嵌入二进制应用程序中的qml有关(也许与grabToImage有关)

无论如何,我目前的计划是将图像发送到golang后端并从那里保存出来,所以我的问题是,如何从saveToFilesudo.exec(command, options, function(error, stdout, stderr){ if (error) throw error; console.log(stdout) }); 中获取图像字节然后保存?

N.B在Golang和qml之间的接口上使用therecipe / qt

1 个答案:

答案 0 :(得分:0)

我已经使用这种方法来抓取屏幕截图。

function performScreenShot(item, name) {
    if(typeof(item) === "undefined") {
        return;
    }
    else if(typeof(name) !== "string") {
        name = "screenshot.png"
    }

    item.grabToImage(function(result) {
        result.saveToFile(name);
    });
}

用法示例:-

performScreenShot(main, "screenshot-" + screenShotIndex + ".png")

主要是我的对象ID,而screenShotIndex是即时递增的,以便不覆盖以前的任何捕获。

确保您对设备具有写权限。