// img - элемент <IMG>
// form - желаемый формат'image/jpeg' или 'image/png'
// qa - степень сжатия для jpg (от 0 до 1)
// см [url]https://developer.mozilla.org/ru/docs/Web/API/HTMLCanvasElement/toBlob[/url]
const ImgtoBlob (img, form, qa) =>{
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
canvas.height = img.naturalHeight;
canvas.width = img.naturalWidth;
ctx.drawImage(img, 0, 0);
return new Promise ((res, rej) => {
canvas.toBlob ((blob) => res(blob), form, qa)
})
}
//Вызов
ImgtoBlob (img, 'image/jpeg', 0.9).then (blob) => {/* тут можно обрабатывать блоб*/})
//или
let blob = await ImgtoBlob (img, 'image/png')
/* тут можно обрабатывать блоб */
Т.е. это заново кодирует изображение в файл и представляет его в виде блоба.