Html2canvas javascript скриншот передать в python

Можно ли использовать html2canvas для получения изображения экрана пользователя, но также я хочу использовать это изображение с помощью функции python. Я хочу сохранить изображение html-элемента с помощью javascript и отправить его в slack с помощью python.

 function capture() {
          html2canvas(document.getElementById("main"), {
              letterRendering: 1,
              allowTaint: true,
              useCORS: true,
          })
              .then(function (canvas) {
                  document.getElementById("result").src = canvas.toDataURL("image/png", 0.5);
              })
              .catch((e) => {
                  alert(e);
              });
      }

Вы можете использовать функцию HTMLCanvasElement.toBlob для преобразования изображения холста в Blob, которое вы можете отправить через fetch.

.then(function (canvas) {
  canvas.toBlob(blob => {
    fetch("URL", {
      method: 'POST',
      headers: { 'Content-Type': 'image/png' }
      body: blob
    })
  
    const imgSrc = URL.createObjectURL(blob);
    document.getElementById("result").onload = () => URL.revokeObjectURL(imgSrc);
    document.getElementById("result").src = imgSrc;
  }, "image/png", 0.5)
});

я решил проблему таким образом;

JS;

<script>
      function capture() {
          html2canvas(document.getElementById("main"), {
              letterRendering: 1,
              allowTaint: true,
              useCORS: true,
          })
              .then(function (canvas) {
                  document.getElementById("result").src = canvas.toDataURL("image/png", 0.5);
                  var img = canvas.toDataURL();
                  $.ajax({
                  type: "POST",
                  url: "{% url 'sendtoslack' %}",
                  data: { 
                  "imageData": img,
                  csrfmiddlewaretoken: '{{ csrf_token }}'
                  }
                  
              })
              })
              .catch((e) => {
                  alert(e);
              });
      }
  </script>

просмотр;

image = request.POST.get('imageData')

декодирование base64;

import base64

imagestr = str(image)
x = imagestr[22:]
img = Image.open(io.BytesIO(base64.decodebytes(bytes(x, "utf-8"))))
Вернуться на верх