Загрузка / декодирование изображения на веб-работнике: неверный размер / тип блоба и DomException - PullRequest
0 голосов
/ 03 мая 2019

Я пытался загрузить и декодировать файл изображения (png) на веб-работнике.Я получаю данные изображения, используя XMLHttpRequest как Blob , а затем пытаюсь создать ImageBitmap , используя createImageBitmap .Это прекрасно работает в основном потоке, но дает исключение DomException при запуске того же кода на Web Worker .Я обнаружил, что большой двоичный объект, возвращаемый из запроса xhr, отличается при выполнении в основном потоке и в веб-работнике, в частности, в основном потоке, который я получил

Blob {size: 526050, type: "image/png"}

, в то время как на веб-работнике я получил

Blob {size: 175, type: "text/html"}

Это соответствующий код:

const loadImg = (url) => {

    const xhr = new XMLHttpRequest()
    xhr.responseType = "blob"

    return new Promise((resolve, reject) => {

        xhr.onload = () => {
            const blob = xhr.response

            // This gives Blob {size: 526050, type: "image/png"} on the main thread and
            // Blob {size: 175, type: "text/html"} on the web worker
            console.log(blob) 

            createImageBitmap(blob).then((img) => {
                return resolve(img)
            }).catch(e => {
                return reject(e)
            })
        }

        xhr.onerror = (error) => {
            return reject(error)
        }

        xhr.open("get", url, true);
        xhr.send();
    })
}

const test = async () => {

    try {
        const img = await loadImg("src/assets/image.png")
        console.log(img)
    }
    catch (e) {
        console.error(e)
    }

}

test()

Почему я получаю два разных объекта BLOB-объектов при выполнении запроса из основного потока и веб-работника?

Проверено наChrome, Windows

...