Инструмент для выравнивания вложенных преобразований SVG
Интересно, есть ли какой-нибудь инструмент командной строки для выравнивания вложенных групп с преобразованиями в SVG?
В моем конкретном случае я конвертирую созданный CAD-программой PDF в SVG, а затем добавляю некоторые элементы и публикую измененный SVG на веб-странице для просмотра. Время отклика SVG очень вяло (для панорамирования и масштабирования), и я обнаружил, что оно связано с очень большим количеством вложенных групп внутри SVG, часто до нескольких сотен глубин. Для каждого элемента в SVG браузер должен рассчитать положение по всем его родительским узлам...
Очевидно, это смешно, так как все эти элементы нуждаются в одном преобразовании (матрице). Поэтому мне интересно, знает ли кто-нибудь об инструменте, чтобы сгладить это (или о реализации C# или Delphi, которая сделала бы это...).
4 ответа
Лучшее, что я нашел, это svgo https://github.com/svg/svgo но это все еще не удовлетворительно. Цель SVGO - создать файл SVG меньшего размера. Это означает, что если преобразование допускает меньший SVG-файл, оно сохраняется. Мои цели похожи на ОП, но немного отличаются. Я ищу что-то, что может сгладить и полностью упростить SVG до базовых путей и элементов.
Вы можете попробовать SVG Cleaner. К сожалению, это инструмент с графическим интерфейсом, поэтому он не совсем соответствует вашим требованиям, но предлагает философию пакетной обработки, которая может оказаться полезной.
Спасибо Делапуите,
тем временем я нашел это: ( PStill). Он отлично справляется с выравниванием структуры (PDF в PDF), но в результате SVG по-прежнему содержит много элементов, что делает его совершенно непригодным для использования в браузере. Проблема в том, что САПР-системы создают в PDF: множество очень маленьких путей вместо одного более длинного пути. Я почти уверен, что еще есть место для оптимизации... однажды:-)
Существует возможность сгладить преобразования в графическом редакторе Inkscape.
Таким образом, вы можете использовать команды терминала Inkscape для достижения этого, но вам придется посмотреть, существует ли такая команда.
Я новичок в Inkscape, но стар для GIMP.
Я отмечаю, что в Inkscape есть папка "extensions", внутри которой находятся программы на python.
Я подозреваю, что Inkscape имеет аналогичную функциональность (хотя это не было сразу очевидно в справке) с GIMP, позволяя пользователям писать свои собственные пользовательские расширения. В GIMP самые простые сценарии просто автоматизируют ручные шаги, которые пользователи выбирают из меню в одном из своих рабочих процессов.
Однако возможна более сложная обработка, чем предлагается в меню.