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"))))