在imagemagick中将.eps批量转换为.jpg并制作.mkv

时间:2016-05-04 03:12:56

标签: imagemagick jpeg batch-processing eps

我正在尝试将多个.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(如输出 - %d.eps和输出 - %d.jpg),但没有成功。

除此之外,我打算获取所有这些文件和#34;转换"它们分为.mkv或.gif或类似类型(它们是粒子碰撞系统时间配置的图像,因此每个图像都是一个帧,因此目标是将其制作成10秒的电影)。如果有办法直接从.eps那里做到这一点,那就更好了。我们欢迎任何帮助,因为我现在已经尝试了几个小时。谢谢。

2 个答案:

答案 0 :(得分:0)

您应该可以像这样一次制作动画GIF:

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

如果做不到这一点,您应该能够将所有eps个文件转换为PNG,并使用:

mogrify -density 300 -format png outputs-*eps

小心使用mogrify - 它会覆盖输入文件,除非您为输出目录指定-path,或者更改格式 - 就像我刚刚对PNG所做的那样。

答案 1 :(得分:0)

对于在此登陆并试图解决ImageMagic的convert: not authorized而又不还原对系统范围的安全策略所做的更改以关闭漏洞的任何人,这是使用Ghostscript进行操作的方法直接将EPS批量转换为JPEG,而无需将ImageMagick纳入混合:

gs -dSAFER -dEPSCrop -r300 -sDEVICE=jpeg -o outputs-%03d.jpg outputs-*.eps
  • -dSAFER将Ghostscript置于沙盒模式,其中Postscript代码只能与您在命令行上指定的文件进行交互。 (是的,EPS,PS和PDF文件中定义页面内容are in a turing-complete programming language的部分。)
  • -dEPSCrop要求将渲染的输出裁剪到图形的边界框,而不是填充到Ghostscript希望您打印到的任何尺寸的页面。 (有关详细信息,请参见the manual。)
  • -r300请求300 DPI(-r600要求600 DPI,等等)
  • -sDEVICE指定输出格式(其他选择请参见手册的Devices section。)
  • -o-dBATCH -dNOPAUSE -sOutputFile=的简写
  • Ghostscript手册的
  • This section给出了一些用于多文件文件名输出的示例格式,但是对于实际的语法定义,它为您提供了C printf(3)函数的文档。

获得JPEG后,您可以按照this answer over on the Video Production Stack Exchange中的说明将它们组合成MKV文件。

TL; DR是此命令:

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

如果您想要执行帧间压缩而不是旨在避免再次对JPEG进行转码的代码,请查看其他答案。

(如果需要最大的妥协,请让Ghostscript输出PNG,然后让ffmpeg处理切换到有损压缩)。