Создайте файл SVG из множества небольших файлов svg в java

В настоящее время я работаю с JavaFX 2.2 и Batik. У меня есть приложение с панелью, на которую вы можете перетаскивать несколько изображений SVG. Это все работает, и код svg каждого изображения хранится в каждом объекте, так что я тоже могу это получить.

Однако теперь я хочу сделать «скриншот» этой панели и ее текущих дочерних элементов SVG и экспортировать его в виде файла svg.

Для меня есть две возможности:

1) экспортировать его с помощью функции takeSnapshot() в виде файла .png и преобразовать в svg

2) или создать новый svg-файл из всех маленьких svg-файлов, обращая внимание на положение каждого svg-picture-object.

Возможно ли последнее? Или кто-нибудь знает, может ли батик сделать это преобразование png в svg?

Спасибо большое за вашу помощь! :)


person user1582432    schedule 11.01.2013    source источник


Ответы (1)


При подходе 1) вы потеряете всю векторную информацию и в конечном итоге получите растровое изображение. Результат обычно будет больше (с точки зрения дискового пространства) и потеряет качество при масштабировании.

Так что подход 2) явно лучше. Batik реализует SVG DOM, так что манипулирование отдельными документами не должно быть слишком сложным.

person Henry    schedule 11.01.2013
comment
Спасибо за ответ! Вы случайно не знаете, как начать рисовать в определенной позиции внутри svg? Как команда goto. И, вероятно, мне пришлось бы менять координаты в маленьких svg в соответствии с их положением на окончательном изображении svg, верно? - person user1582432; 12.01.2013
comment
SVG поддерживает преобразования (такие как масштабирование, вращение, перемещение и т. д.), поэтому вам не нужно изменять координаты в дополнительных изображениях. Я не уверен, что вы можете использовать их полностью без изменений или вам нужно сделать некоторую распаковку. Подробности см. в спецификации SVG. - person Henry; 12.01.2013