Как я могу написать сценарий для экспорта SVG-файла как в цветном, так и в монохромном формате с помощью Inkscape?

#bash #shell #command-line-interface #inkscape #monochrome

#bash #оболочка #интерфейс командной строки #inkscape #монохромный

Вопрос:

Я получил следующий скрипт для экспорта моего *.svg .png файла в разных размерах.

 #!/usr/bin/env bash

[[ ! -d png ]] amp;amp; mkdir png/

for svg in logo.*.svg; do
  echo $svg $png
  sizes=( 64 128 256 512 1024 )
  for size in "${sizes[@]}"; do
    png="png/${svg//.svg/.$size.png}"
    [[ $png =~ vertical ]] amp;amp; inkscape --without-gui --export-height=$size --export-png="$png" --file="$svg"
    [[ $png =~ horizontal ]] amp;amp; inkscape --without-gui --export-width=$size --export-png="$png" --file="$svg"
  done
done
  

Поскольку я хочу экспортировать как монохромную (черно-белую), так и цветную версию, в настоящее время у меня есть обе версии SVG:

  1. logo.bw-horizontal.svg
  2. logo.bw-vertical.svg
  3. logo.horizontal.svg
  4. logo.vertical.svg

Вопрос

Как я могу улучшить свой скрипт для экспорта в монохромном формате без необходимости иметь SVG-файл в монохромном формате?

Редактировать

Существует verb , но не уверен, как его использовать:

 org.inkscape.effect.filter.Silhouette: Repaint anything visible monochrome  
  

Комментарии:

1. вы уже нашли решение этой проблемы?

Ответ №1:

Спасибо @Bonanza за удар

Вот мои тесты BATS и соответствующий код для выполнения преобразования. Это сводится к:

  1. экспорт PNG в PNG
  2. конвертируйте PNG в монохромный с помощью convert

     convert "$png" -colorspace Gray "$monochrome"