SVG имеет эти свойства, которые определяют его размер:
width="146.91299pt"
height="78.079002pt"
viewBox="0 0 146.913 78.079"
Я хотел бы масштабировать данный SVG в 400pt
командной строке без нарушения соотношения сторон. Это означает, что три значения выше должны быть изменены правильно, и все точки в следующем коде SVG. Я не хочу изменять только размер холста, но весь размер изображения SVG. И я не хочу делать это с помощью GUI / вручную, но я хочу сделать это с помощью CLI.
Как я могу автоматически масштабировать SVG с помощью командной строки до заданной ширины?
Причина: предварительный просмотр Википедии выглядит плохо, если изображение слишком маленькое. Смотрите это изображение в качестве примера.
Как бы я сделал эту задачу с Inkscape-GUI
- Shift + Ctrl + M (Преобразование)
- Шкала (отметьте «пропорционально масштабировать»)
- Введите ширину
- Shift + Ctrl + D (Свойства документа)
- Подогнать страницу к выбору
Теперь я хочу автоматический CLI-способ сделать это.
Кстати, Inkscape просто применяется
<g transform="matrix(1.6838397,0,0,1.6838397,-3.3543029,-3.3542794)"
id="surface0">
на весь образ.
источник
width
,height
иviewBox
значение к чему - то вродеwidth="100%" height="100%" viewBox="0 0 400 212.58569"
.sed
в ответе @ тердона). Одна из проблем, с которой вы можете столкнуться, заключается в том, что значения могут отличаться от любых других файлов .svg, с которыми вы хотите сделать то же самое.Ответы:
rsvg-convert
изlibrsvg2-bin
пакета можно изменить размер SVG.Смотрите этот ответ для полных инструкций.
источник
rsvg-convert -a -w 500 -f svg Vector-triangle-inequality.svg -o Result.svg
работал. Но rsvg-convert делает больше, чем просто изменяет размер.rsvg-convert --help
не дает никаких подсказок.Если вы просто хотите изменить одно изображение, откройте его в текстовом редакторе (например, emacs) и измените ширину записи.
Для энтузиастов, подход только для CLI, используйте sed:
Это не будет масштабировать изображение, а только установить его ширину.
Возможно, лучший способ, но, безусловно, тот, который можно запустить в пакетном режиме для многих изображений, - это использовать inkscape из командной строки:
Для многих файлов (при условии, что вы хотите, чтобы все они имели одинаковую ширину), выполните следующие действия. Требуется преобразование в png и предполагается, что в именах файлов нет пробелов:
Преобразование ImageMagick было моим первым выбором, но, похоже, он ломается при масштабировании svgs.
источник