Как конвертировать div # WareHouse с SVG внутри в изображение - PullRequest
0 голосов
/ 24 мая 2019

Как преобразовать div # WareHouse с SVG внутри в изображение, затем загрузить и центрировать div # WareHouse. Я хочу сгенерировать div # WareHouse как код изображения после нажатия на кнопку submit:

<div id="WareHouse">
  <img width="80" src="http://rgrzymala.pl/2.svg" style="top: 48px; left: 8px;">
  <img width="80" src="http://rgrzymala.pl/2.svg" style="top: 76px; left: 56px;">
  <img width="80" src="http://rgrzymala.pl/2.svg" style="top: 104px; left: 104px;">
  <img width="80"
    src="http://rgrzymala.pl/2.svg" style="top: 132px; left: 152px;">
  <img width="80" src="http://rgrzymala.pl/2.svg" style="top: 160px; left: 200px;">
  <img width="80" src="http://rgrzymala.pl/2.svg" style="top: 188px; left: 248px;">
  <img width="80" src="http://rgrzymala.pl/2.svg"
    style="top: 216px; left: 296px;">
  <img width="80" src="http://rgrzymala.pl/2.svg" style="top: 244px; left: 344px;"><img width="80" src="http://rgrzymala.pl/2.svg" style="top: 272px; left: 392px;">
  <img width="80" src="http://rgrzymala.pl/2.svg" style="top: 300px; left: 440px;">
  <img width="80" src="http://rgrzymala.pl/2.svg" style="top: 328px; left: 488px;">
  <img width="80" src="http://rgrzymala.pl/2.svg" style="top: 356px; left: 536px;">
  <img width="80" src="http://rgrzymala.pl/2.svg" style="top: 384px; left: 584px;">
  <img width="80" src="http://rgrzymala.pl/2.svg" style="top: 412px; left: 632px;">
  <img width="80"
      src="http://rgrzymala.pl/2.svg" style="top: 440px; left: 680px;">
  <img width="80" src="http://rgrzymala.pl/2.svg" style="top: 468px; left: 728px;">
  <img width="80" src="http://rgrzymala.pl/2.svg" style="top: 496px; left: 776px;">
  <img width="80" src="http://rgrzymala.pl/2.svg"
      style="top: 524px; left: 824px;">
  <img width="80" src="http://rgrzymala.pl/2.svg" style="top: 552px; left: 872px;">
  <img width="80" src="http://rgrzymala.pl/2.svg" style="top: 580px; left: 920px;">  
</div>

Я пробовал в библиотеке html2canvas, но безрезультатно.Видимо, может быть, он не поддерживает SVG.Вот ссылка !

1 Ответ

1 голос
/ 24 мая 2019

Я думаю, что лучшим подходом было бы использование холста с самого начала.

Затем вы можете использовать JS, поскольку вам нужно рисовать изображения на холсте (используя ваши SVG), например, так:

var img = new Image();
img.onload = function() {
    ctx.drawImage(img, 0, 0);
}
img.src = "http://upload.wikimedia.org/wikipedia/commons/d/d2/Svg_example_square.svg";

Обратите внимание, что drawImage принимает изображение, а также координаты X и Y.См. Существующий вопрос для более подробной информации: Рисование файла SVG на холсте HTML5

После того, как вы нарисовали SVG так, как хотели бы, вы можете использовать .toDataURL() на своемхолст.Примерно так:

var canvas = document.getElementById('canvas');
var dataURL = canvas.toDataURL();

Вышеприведенное вернет строку в кодировке base64, которая, в свою очередь, может быть выведена в браузер для запроса сохранения.Следующее действительно хорошо описывает это: Как сохранить холст как изображение с canvas.toDataURL ()?

Существует также библиотека, которая поможет с преобразованием и сохранением: canvas2image

...