Использование Web Worker для получения данных изображения (ширина, высота и данные пикселей), кросс-браузер - PullRequest
0 голосов
/ 24 ноября 2018

Я создаю веб-работника, который извлекает изображение, а затем возвращает некоторые метаданные (ширина, высота и средняя темнота изображения, рассчитанные по данным пикселей изображения).

Пока у меня естьрабочий, который работает, чтобы получить ширину и высоту изображения, однако он работает только в Chrome, поскольку полагается на createImageBitmap ().Я также не могу, насколько я вижу, получить доступ к значениям данных пикселей.

self.onmessage = (e) => {
    const { url, key } = e.data;

    fetch(url, {
        method: 'GET',
        mode: 'cors',
        cache: 'default'
    }).then(response => {
        return response.blob();
    }).then(async (blob) => {
        const image = await self.createImageBitmap(blob);
        self.postMessage({ url, key, metadata: {
            width: image.width,
            height: image.height,
            aspectRatio: image.width / image.height,
        }});
        image.close();
    });
}

Есть ли способ, которым это может быть достигнуто без передачи изображения обратно в основной поток для получения данных изображения.

...