我现在正在使用ImageMagick convert
实用程序。我有一个PostScript文件,大约需要90秒才能转换为GIF。
我正在寻找一种更快的方法,通过修改“转换”选项来实现这一目标。
当我说“快”时,理想情况下只需几秒钟,但我会加快速度。适合交互式GUI的东西。
我只需要黑白或灰度(特别是它是地震数据的图像“摆动痕迹”所以B& W很好。)
其他可接受的格式是BMP,GIF,JPEG,JPG,PCX,PGM,PNG,PNM,PPM,RAS,TGA,TIF或TIFF。
尝试坚持使用已安装的ImageMagick并试图避免出售任何新的老板。仍然很高兴听到其他建议。
答案 0 :(得分:4)
我的建议是:使用Ghostscript 。
由于你已经安装了一个有效的ImageMagick,这意味着Ghostscript也在那里:因为ImageMagick无法将PDF或PostScript全部转换为光栅图像 - 它必须将Ghostscript称为委托无论如何要这样做。
Ghostscript可以直接将PDF / PostScript输入转换为TIFF / TIF / TIFFg4,JPEG,PBM,PCX,PNG,PNM,PPM,BMP光栅图像输出。
优点是:您不需要涉及ImageMagick。因此它更快,并且还可以更直接地控制转换参数。如果你通过ImageMagick运行Ghostscript,这是一个并不总是需要的间接级别。 (有时可能需要对Ghostscript生成的栅格图像数据添加一些微调和后处理操作 - 但对您来说情况似乎并非如此。)
唯一的缺点是: Ghostscript无法生成GIF。如果您需要 GIF(您似乎不喜欢),则需要ImageMagick将Ghostscript的光栅输出后处理为GIF。
您可以看到ImageMagick如何调用Ghostscript(以及它用于调用的参数 - 在包含gs
,gsx
或{{的 stderr 上查找打印行1}}或gswin32c
)通过运行例如:
gswin64c
<强>更新强>
我确实运行了一个非常非科学的“基准”,每个100次运行以下两个命令,将随机选取的official PDF specification (ISO version for PDF-1.7)页面333转换为GIF,测量所消耗的时间。我同时并行运行这些命令,因此两者都必须处理相同的整体系统负载,使结果更具可比性:
'舒服'使用ImageMagick的 convert -verbose some.pdf[0] some.gif
直接制作GIF:
convert
使用Ghostscript从同一页面创建灰度PNG,将Ghostscript的输出传输到ImageMagick的time for i in $(seq -w 1 100); do
convert \
PDF32000_2008.pdf[333] \
p333-im-no_${i}.gif ;
done
以获取GIF:
convert
第一个命令的定时结果(运行'舒适'time for i in $(seq -w 1 100); do
gs \
-q \
-o - \
-dFirstPage=333 \
-dLastPage=333 \
-sDEVICE=pnggray \
PDF32000_2008.pdf \
| \
convert \
- \
p333-gs-no_${i}.gif ;
done
来实现PDF-&gt; GIF转换,它只在'我们背后'使用Ghostscript):
convert
第二个命令的计时结果(直接+公开运行real 2m29.282s
user 2m22.526s
sys 0m5.647s
,将其输出汇总到gs
:
convert
还有一件事:
100'Ghostscript'-GIF的总大小为1,6 MByte - 但它们是8位灰度。
100'ImageMagic-direct'-GIF的总大小为1,2 MByte - 但它们是2位黑+白。
我目前没有动力调整测试命令行参数,以便更加可比较生成的文件。
这个结果(149秒对87秒)让我充分相信我的猜测,当你按照我的建议时,你可以获得显着的性能提升。 : - )
答案 1 :(得分:1)
我现在正在使用ImageMagick转换实用程序。我有一个 PostScript文件大约需要90秒才能转换为GIF。
我正在寻找一种更快的方法,通过修改它来实现这一点 “转换”的选项。
当我说“快”时,理想的是几秒钟,但我会采取任何重要的 加速。适合交互式GUI的东西。
我只需要黑白或灰度(特别是它) 是地震数据“摆动痕迹”的图像,所以B&amp; W很好。)
您可以从GhostScript开始:
gs -dSAFER -dBATCH -dNOPAUSE \
-sDEVICE=pnggray -r300 -sOutputFile=seismic.png seismic.pdf
更长但有趣的方法是准确分析这些PDF中的 。
我必须使用EKG工作流程的PDF输出做类似的事情。原始数据不可用,我们只有PDF,但我发现PDF是基于矢量而不是光栅。经过一点点黑客攻击后,很容易解码构成EKG图表的标签,图例和单个基本线,我想出了一个从灰度图像开始重新着色轨迹的选项。但确实需要几天时间。
您的PDF可能以类似的方式生成,并且数据可能会被解码(起初我必须使用pdftk
来获取非压缩PDF,然后我找到了一个库,我可以使用 - 它实现了Deflate算法)。以SVG格式输出真的很酷: - )