Blob возвращает пустое изображение, как решить?

Есть такой код
parent.querySelectorAll('.gallery-uploads-imgs__item').forEach(element => {
					var img = new Image;
					img.src = element.dataset.src
					document.body.append(img)



					let canvas = document.createElement('canvas')
					let context = canvas.getContext('2d');
					canvas.width = img.clientWidth
					canvas.height = img.clientHeight


					img.onload = function() {
						context.drawImage(img, 0,0);
						img.remove()
					}


					canvas.toBlob(function(blob) {
						let uploadImageUrl = URL.createObjectURL(blob);

						data.blobs.push( uploadImageUrl )

					}, 'image/png');
					
				})


uploadImageUrl получает путь до пустого изображение.
Что может быть не так?
  • Вопрос задан
  • 190 просмотров
Решения вопроса 1
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
Отрисовка на канвасе идет после загрузки изображения
А запрос на извлечение блоба идет до загрузки изображения и следовательно до отрисовки его на канвасе
parent.querySelectorAll('.gallery-uploads-imgs__item').forEach(element => {
          var img = new Image;
          img.src = element.dataset.src
          document.body.append(img)



          let canvas = document.createElement('canvas')
          let context = canvas.getContext('2d');
          canvas.width = img.clientWidth
          canvas.height = img.clientHeight


          img.onload = function() {
            context.drawImage(img, 0,0);
            img.remove();
            canvas.toBlob(function(blob) {
              let uploadImageUrl = URL.createObjectURL(blob);

              data.blobs.push( uploadImageUrl )

            }, 'image/png');
          }    
        })


P.S. вангую следующий вопрос будет в стиле data.blobs пустой...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы