Я нашел код, который помещает изображение в холст, а затем преобразует его в данные - которые затем могут быть, например, закодированы в base64. Я думал о том, чтобы вызвать это с помощью команды eval в selenium, однако в моем тестировании toDataURL выдает ошибку безопасности 1000. Похоже, что это очень близко к решению, если бы не эта ошибка.
var data, canvas, ctx;
var img = new Image();
img = document.getElementById("yourimageID");
canvas = document.createElement('canvas');
canvas.width = img.width;
canvas.height = img.height;
ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0); // everything works up to here
data = canvas.toDataURL(); // this fails ***
var base64Img = data.replace(/^data:image\/(png|jpg);base64,/, "");
Проводя некоторые исследования, я обнаружил ссылки на то, что нельзя использовать toDataURL, когда изображение находится в другом домене. Однако я даже попробовал этот код, сохранив страницу, удалив все, кроме самого изображения и этого сценария.
Например (index.html):
<html><head></head><body>
<img src="local/hard/disk/img.jpg" id="yourimageID">
<script>
// script from above
</script>
</body></html>
img.jpg и index.html хранятся локально, открывая страницу в Firefox локально, все еще получая ошибку безопасности 1000!