У меня есть набор значков SVG, которые я хотел бы использовать для разработки приложения в VB.Net 2010, и, поскольку он не поддерживает обработку значков SVG, мне необходимо преобразовать эти значки в PNG или ICO, с предпочтением выходное разрешение. Я нашел такой инструмент командной строки для Ubuntu под названием rsvgconvert
. Есть ли у нас такой инструмент для Windows?
command-line
conversion
icons
svg
Kushal
источник
источник
apt install imagemagick
ImageMagick не должен сразу связываться с какой-либо пакетной задачей, связанной с изображениями. Особенно в этом случае, когда ImageMagick является плохим решением для конвертации SVG.
Лучше попробуйте Inkscape в командной строке:
inkscape in.svg --export-png=out.png
источник
-z
опцию.Командная строка не работала из коробки, плюс я хотел, чтобы 100 файлов были конвертированы. Вот как я сделал это работает с Windows 7:
установить Inkscape - не портативный!
Скопируйте все ваши SVG-файлы в одну папку, например, "C: \ svgs \" там:
вы создаете
convert.bat
файл с этой строкой внутри:(укажите правильную папку вашей установки):
откройте CMD как администратор! Для этого нажмите клавишу WIN, введите cmd, щелкните правой кнопкой мыши «cmd.exe» и выберите «Запуск от имени администратора».
перейдите к своему "C: \ svgs \" и введите
convert.bat
- Все svg-файлы будут преобразованы в PNG.Используйте проводник Windows для поиска преобразованных файлов PNG. На моем ПК они были в папке:
C:\Users\myname\AppData\Local\VirtualStore\Program Files (x86)\Inkscape\svgs
Надеюсь, это поможет.
Поскольку разрешение для командной строки можно было установить только фиксированным, насколько я мог видеть, я в конечном итоге использовал инструмент InkscapeBatch . Там я мог бы установить DPI для увеличения всех изображений относительно.
Вам нужно указать правильные настройки, иначе он не будет работать. Вот что я сделал:
После того, как вы нажмете «Готово», вам нужно нажать кнопку «Запустить пакетный конвертер ...» на панели инструментов:
источник
%%A
(в качестве имени входного файла). Кроме того, почему вы предполагаете, что он должен работать только в режиме администратора?--export-dpi=100
где 100-е значение dpiInkscapeBatch выполняет работу в Windows. Требуется Inkscape .
источник
Для преобразования SVG в PNG я обнаружил, что cairosvg ( https://cairosvg.org/ ) работает лучше, чем ImageMagick. Шаги для установки и запуска всех файлов в вашем каталоге.
Откройте оболочку python в каталоге, содержащем ваши файлы .svg и запустите:
Это также гарантирует, что вы не перезапишите исходные файлы .svg, но сохраните то же имя. Затем вы можете переместить все ваши файлы .png в другой каталог с помощью:
источник
После борьбы с этим в течение почти 2 часов я поселился в Inkscape. Поскольку мне нужно было конвертировать несколько файлов в разных разрешениях, я создал скрипт Powershell. С 106 SVG мой компьютер завис на 5 секунд, поэтому будьте осторожны при использовании этого.
источник
&
Оператор запускает новый процесс и продолжается сразу, так что этот сценарий будет создавать так много новых процессов inkscape.exe , как у вас есть файлы SVG. Оказывается, это делает ваш компьютер довольно медленным на некоторое время.| Out-Null
в конец строки, которая начинается с&
нее, вы заставите ее выполнить команду inkscape.exe по одной, что для меня гораздо лучше.Вы можете использовать следующее в Bash / Ubuntu для Windows, в папке с SVG. Однако кажется, что ImageMagick сначала растеризует, а затем изменяет размеры, что приводит к странным артефактам ...
find -name "*.svg" -exec convert {} -background none -density 300 -resize 256x256 -define icon:auto-resize -alpha remove -colors 256 {}.ico \;
Также посмотрите вот решение на основе Inscape, которое, кажется, работает хорошо (из другого потока, ссылка потеряна):
mkdir temp; declare -a res=(16 24 32 48 64 128 256); for f in *.svg; do for r in "${res[@]}"; do inkscape -z -e temp/${f}${r}.png -w $r -h $r $f; done; resm=( "${res[@]/#/temp/$f}" ); resm=( "${resm[@]/%/.png}" ); convert "${resm[@]}" ${f%%.*}.ico; done; rm -rf temp;
источник
find -name "*.svg" -exec inkscape {} -e {}.png \;
Хотя я предпочитаю эту версию:ls | grep ".svg" | xargs -I file inkscape file -e file.png
потому что файлы обрабатываются в алфавитном порядке - это не тот случай, когда используетсяfind
ImageMagick доступен для Windows и может конвертировать между SVG и PNG и ICO (среди прочих). Вы можете установить размер и другие атрибуты для выходного файла.
источник
Я не смог найти ни одной команды, которая работала бы для запуска пакета, поэтому я заставил ее работать, генерируя список файлов и создавая серию команд. Эти инструкции должны работать для всех версий Windows. Все инструкции по печатанию исключают цитаты и включают все между ними.
Для этого вам понадобится Inkscape, MS Excel или аналогичный редактор электронных таблиц и генератор списков. Здесь есть отличный генератор списков бесплатных программ: https://www.portablefreeware.com/?id=1171
Если вы сделали это правильно, у вас должна быть одна строка для каждого имени файла, которая выглядит следующим образом: | inkscape C: \ SVG \ | Filename1.svg | --export-PNG = C: \ PNG \ | Filename1.png |
Надеюсь, что это делает чью-то жизнь проще. Джеймс
источник
Ответ Кая близок, но у меня не получилось. Однако, с несколькими небольшими изменениями, это сработало в первый раз:
convert.bat
convert.bat
в вашем любимом текстовом / кодовом редакторе и введите следующее:FOR %%A IN (*.svg) DO "C:\Program Files\Inkscape\inkscape.exe" %%A --export-png=%%A.png
(Обратите внимание , что
inkscape.exe
расположение должно соответствовать исполняемое местоположению программы на вашем компьютере, а второй , прежде чем--export-png
это%%A
- это SVG файл , который преобразуется)convert.bat
чтобы запустить, и он должен повторить результаты преобразований.Обратите внимание, что вам может потребоваться обновить папку Windows, чтобы увидеть новые файлы, но все они должны были быть созданы в том же месте, что и исходные SVG.
источник
По какой-то причине мне не удалось заставить работать imagemagick или inkscape. У меня было всего 12 файлов для конвертации, я просто использовал этот сайт вручную: http://svgtopng.com/ работал с удовольствием.
источник
Вот решение на основе ImageMagick для преобразования всех файлов SVG в данном каталоге в файлы ICO:
Объяснение:
mogrify
: Нравитсяconvert
, но позволяет пакетно обрабатывать несколько файлов.-format ico
: Наш целевой формат файла. Создает.ico
файлы вместо перезаписи исходного файла (как mogrify будет делать по умолчанию).-density 1200
: Поскольку мы не можем указать целевой размер пикселя, в который ImageMagick должен растеризовать SVG (сначала он будет растеризован с плотностью по умолчанию, а затем масштабирован), мы растеризуем SVG с безумно высоким разрешением (1200 точек на дюйм), чтобы гарантировать, что изображение будет уменьшено до 256x256 вместо увеличенного.-background transparent
: Фон будет отображаться как прозрачный.-trim
: Удалить существующую рамку вокруг изображения.-resize 256x256
: Масштабируйте изображение, обеспечивая максимальную длину 256 пикселей, сохраняя соотношение сторон.-gravity center -extent 256x256
: Увеличьте холст, убедившись, что у короткой стороны также есть 256px. Существующее изображение выровнено по центру. Это необходимо, потому что нам нужно квадратное изображение в качестве основы для файла ICO.-define icon:auto-resize
: Включите в файл ICO не только изображение 256x256, но и все рекомендуемые уменьшенные разрешения (например, 32x32).источник
Большинство ответов, приведенных здесь, игнорируют нужную часть вопроса. Я не мог получить удовлетворительные результаты, используя
convert
"масштабирование" SVG.inkscape
делает лучшую работу, а также сохраняет прозрачность фона.В зависимости от вашего варианта использования, используйте один из следующих вариантов:
inscape in.svg -d 300 -e out.png
inscape in.svg -w 800 -e output.png
inscape in.svg -h 600 -e output.png
Обратите внимание, что указание ширины и высоты не сохраняет соотношение сторон.
Чтобы преобразовать сразу несколько файлов, настройте следующие параметры в соответствии с вашим вариантом использования (
bash
совместимым или совместимым):источник