qml qt grabToImage получить байты изображения - PullRequest
0 голосов
/ 11 января 2019

По какой-то причине сохранение png обратно из qml напрямую не работает. У меня есть интерфейс qml поверх приложения Golang. Когда я делаю

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. Однако я получаю неизвестную ошибку сохранения из приведенного выше кода.

Я подозреваю, что это как-то связано со встроенным в двоичное приложение qml (возможно, с qrc:// или с чем-то)

В любом случае, мой текущий план - отправить изображение в бэкэнд golang и сохранить его оттуда, поэтому мой вопрос, как из grabToImage или saveToFile можно получить байты изображения, которые я затем сохраню?

N.B. Использование therecipe / qt для интерфейса между Golang и qml

1 Ответ

0 голосов
/ 11 января 2019

Я использовал этот метод для захвата скриншотов ..

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")

Где main - это мой идентификатор объекта, а screenShotIndex - это то, что я увеличиваю, чтобы не перекрывать любой предыдущий захват.

Убедитесь, что у вас есть разрешение на запись на устройстве.

...