Пакетное преобразование 5000 векторов в PNG с прозрачностью

У меня есть 5000 векторных изображений (в основном eps/svg), которые мне нужно преобразовать в PNG с прозрачным фоном. Изображения PNG должны быть не более 4000x4000px.

Любая идея, что было бы лучшим способом сделать это? Большинство пакетных конвертеров изображений не поддерживают прозрачность и изменение размера.

Первую часть задачи (вектор в PNG) можно было бы выполнить с помощью действий иллюстратора или фотошопа, но я не нашел способа установить максимальный размер 4000x4000, сохраняя соотношение сторон и максимальное разрешение, соответствующие требованиям.

Одним из вариантов может быть разделение задачи и запуск PNG через что-то еще, чтобы изменить их размер до максимального размера 4000x4000px ... Может быть, Inkscape? Я видел, что некоторые люди могли писать скрипты на Python для выполнения подобных задач.

проблема в том, что трудно установить ограничение 4000x4000px

Ответы (1)

Это будет работа для инструмента командной строки Image Magick mogrify . Следующая команда:

mogrify -resize '4000x4000' -format png *.svg

Преобразует все файлы SVG в текущей папке в PNG с сохранением соотношения сторон, но с наибольшей стороной ровно 4000 пикселей.

Если мы определили непрозрачный белый (или любой другой цвет ) фон в исходном SVG, мы можем добавить прозрачность с помощью:

mogrify -resize '4000x4000' -transparent white -format png *.svg

Примечание о командной строке Windows:
нам нужно ставить перед командами префикс magickи не использовать галочки , но ничего или вместо этого 'кавычки ."

Пример команды Windows может выглядеть так:

magick mogrify -resize "4000x4000" -transparent white -format png *.svg

Преобразование файлов EPS дополнительно требует значения плотности (в DPI):

magick mogrify -resize "4000x4000" -density 300 -transparent white -format png *.eps
Я совершенно нуб, не могли бы вы дать ссылку на документацию об использовании ImageMagick с окнами? я прочитал документы на официальном сайте, я сделал именно то, что они предложили, установил ImageMagick для Windows и попытался запустить ваши команды через приглашение CMD или WindowsPowershell, но он всегда говорит, что «команда mogrify не распознана».... Что я пропал?
Команда преобразования кажется распознанной, но я получаю сообщение об ошибке о параметре 4000x4000 gyazo.com/e9a8e86909ae9514ba7ffa152aff4b87 .... Путь установки ImageMagick — это папка «Программы» по умолчанию, но поиск «morgrify» внутри этой папки не возвращает ни одного исполняемого файла gyazo. com/45572dbacc8ecae2b990063f40f92757 .... Я только что установил ImageMagick по умолчанию для Windows, нужно ли мне что-то еще? Спасибо!
Это работает !!!! Спасибо огромное ! Вы только что сэкономили мне ДНИ работы!
При тестировании этой команды с EPS вместо *.svg я получаю странную ошибку: gyazo.com/7d4ecc904702e94f0d813588f7bdd45c
Результат вывода файла EPS выглядит следующим образом: gyazo.com/0d2d313b73d669ef0c92eca9855c23e5 Если я открою то же изображение в иллюстраторе и вместо этого преобразую его в SVG, сохраните его в той же папке, а затем запустите скрипт с параметром *.svg, вывод PNG выглядит хорошо и ошибки нет... Так что это не похоже ни на ошибку пути, ни на ошибку с графическим файлом... SVG конвертируются правильно, но не EPS :(
Спасибо за ответ ! Протестировал команду, я получаю другую ошибку, но тот же результат (пиксельный png) gyazo.com/a59aa279458bcc5e9a584212368d7373
По-видимому, «PNG не поддерживает dpi, только точки на сантиметр. Таким образом, Imagemagick (предполагается) автоматически конвертирует ваши 300 dpi в эквивалентный dpc». Я также безуспешно тестировал различные параметры: -units PixelsPerCentimeters -colorspace sRGB -density 300
Для резкости изображения нам нужно адаптировать значения плотности в соответствии с нашими потребностями... чем больше, тем четче результирующий PNG. Для размера 4000x4000 пикселей попробуйте плотность 1200 или больше (но учтите, что чем выше плотность, тем больше ресурсов нам потребуется для расчета результата).
Даже с плотностью 1200, вот как это выглядит по сравнению с оригиналом: gyazo.com/edc9174796ea8c3130e9fc8e17933528 Ресурсы не проблема, у меня i7 4.4ghz 6950x (10 ядер) + 64gb ddr4 + GTX 1080 Titan X + 1tb SSD 960 Pro
Похоже на артефакт дизеринга. Может ли это быть растровое изображение, встроенное в EPS?
я поделился своим исходным EPS и более подробной информацией здесь: imagemagick.org/discourse-server/…
Вот моя попытка изображения высотой 4000 пикселей с плотностью 4800: i.stack.imgur.com/L0Elc.png (обрезано из-за размера) — мне кажется, все в порядке.