Пакетное преобразование .eps в .jpg в imagemagick и создание .mkv

Я пытаюсь преобразовать несколько файлов .eps в .jpg. Посмотрев на ответы здесь, в SO, я смог сделать это для отдельных отдельных файлов.

Проблема в том, что когда я пытаюсь сделать это для всех файлов, они не показывают никаких файлов .jpg.

В настоящее время я использую Imagemagick с командой

convert -density 300 outputs-000.eps -flatten outputs-000.jpg

Я считаю, что проблема в том, что мои файлы написаны как

outputs-000.eps
outputs-001.eps
outputs-002.eps
outputs-003.eps
...
outputs-145.eps
...

и так далее. Я попытался поставить% d (как в output-% d.eps и output-% d.jpg), но безуспешно.

Кроме того, я намереваюсь получить все эти файлы и «преобразовать» их в .mkv, .gif или аналогичный тип (это изображения временной конфигурации системы столкновений частиц, поэтому каждое изображение представляет собой кадр, поэтому цель превратить его в 10-секундный фильм). Даже лучше, если есть способ сделать это прямо из .eps. Любая помощь приветствуется, так как я уже несколько часов пытаюсь это сделать. Спасибо.


person DrHAL    schedule 04.05.2016    source источник


Ответы (2)


Вы должны уметь создать анимированный GIF за один раз следующим образом:

convert -density 300 outputs-*eps -delay 200 animated.gif

В противном случае вы сможете преобразовать все свои eps файлы, скажем, в PNG с помощью:

mogrify -density 300 -format png outputs-*eps

Будьте осторожны с mogrify - он перезаписывает ваши входные файлы, если вы не укажете -path для каталога вывода или вы не измените формат - как я только что сделал с PNG.

person Mark Setchell    schedule 04.05.2016

Для тех, кто попадает сюда, пытаясь понять, как обойти convert: not authorized ImageMagic, не отменяя изменения, внесенные в общесистемную политику безопасности, чтобы закрыть уязвимость, вот как вы могли бы использовать Ghostscript для пакетного преобразования EPS в JPEG. преобразование напрямую, без добавления ImageMagick:

gs -dSAFER -dEPSCrop -r300 -sDEVICE=jpeg -o outputs-%03d.jpg outputs-*.eps
  • -dSAFER переводит Ghostscript в изолированный режим, в котором код Postscript может взаимодействовать только с файлами, указанными в командной строке. (Да, части файлов EPS, PS и PDF, которые определяют содержимое страницы , находятся в тьюринге -полный язык программирования.)
  • -dEPSCrop просит обрезать визуализированный вывод до ограничивающей рамки чертежа, а не дополнять его до любого размера страницы, которую Ghostscript ожидает от вас для печати. (Подробности см. В руководстве.)
  • -r300 запрашивает 300 точек на дюйм (-r600 для 600 точек на дюйм и т. Д.)
  • -sDEVICE указывает формат вывода (см. раздел «Устройства» руководства для других выбор.)
  • -o - это сокращение от -dBATCH -dNOPAUSE -sOutputFile=
  • В этом разделе руководства Ghostscript дается несколько примеров форматов для многопользовательской вывод имени файла файла, но для определения фактического синтаксиса он указывает на документацию для C printf ( 3) функция.

Получив файлы JPEG, вы можете выполнить инструкции в этом ответе на сайте Video Production Stack Exchange, чтобы объединить их. в файл MKV.

TL; DR - вот эта команда:

ffmpeg -framerate 30 -i outputs-%03d.jpg -codec copy output.mkv

Ознакомьтесь с другими ответами, если вы хотите что-то, что выполняет межкадровое сжатие, а не стремится избежать повторного перекодирования JPEG.

(Если вам нужен лучший компромисс, пусть Ghostscript выводит PNG, а затем пусть ffmpeg выполняет переключение на сжатие с потерями.)

person ssokolow    schedule 15.02.2020