На рисунке ниже у меня есть, например, прямоугольник.
В графическом интерфейсе Inkscape говорит, что прямоугольник находится в позиции Y 0, но в XML для этого элемента указано 873. Почему это так и как мне получить «настоящее» число?
Фон: при экспорте изображения (по сценарию) я хочу добавить 10-пиксельную границу со всех четырех сторон. Я думал, что могу просто найти самые большие/наименьшие координаты в XML и добавить 10 пикселей для границы, но в итоге я экспортирую полностью белый фон вместо изображения. Работа с XML здесь становится естественной, потому что я получаю от этого другую (мета) информацию.
Я могу запросить происхождение изображения с помощью inkscape -X
и inkscape -Y
и размеры изображения с помощью inkscape -H
и inkscape -W
. Это также дает мне цифры из графического интерфейса. Экспорт с этими значениями работает. Однако для этого требуется разветвление нового процесса Inkscape 4 раза для каждого изображения, что замедляет весь экспорт. (Много изображений на старом оборудовании.)
Это Inkscape 0.91 для Linux, если это имеет значение.
Обычно единицы SVG выражаются в пикселях , и если координаты Inkscape заданы в пикселях, то они должны совпадать (см. также здесь и здесь ).
В вашем примере разница в ширине (236,185 против 234,869) и высоте (180,000 против 178,6805) связана с шириной границы прямоугольника, которая включена в Inkscape W и H и не включена в ширину и высоту SVG.
Например, с обводкой границы 1 пиксель:
Тот же прямоугольник без рамки:
Обратите внимание, что граница располагается по центру контура. В моем примере имеем:
Inkscape W = ширина SVG (199 пикселей) + половина штриха влево (0,5 пикселей) + половина штриха вправо (0,5 пикселей) = 200 пикселей
Имейте в виду, что координата Y в Inkscape имеет ноль внизу документа, а в SVG ноль находится вверху документа.
Y = 0 в Inkscape означает объект внизу документа:
Y = 0 в SVG означает объект в верхней части документа:
Это означает, что ваш «настоящий» номер выглядит примерно так:
Координата Y в SVG (px) = высота страницы (px) - координата Y в Inkscape (px) - высота объекта и границ (px)
(Обратите внимание, что инверсия оси Y будет исправлена в будущем в соответствии с этой проблемой .)