ImageMagick 命令行:将 PDF 转换为高清图像

Oli*_*r C 4 pdf image imagemagick

我正在尝试使用命令行中的 imagemagick 将 PDF 文件动态转换为图像。这些 PDF 的清晰度非常高,我想获得相关图像 (JPG)。

通常使用Gimp,当我在此软件下将这些PDF转换为600dpi时,质量非常好。但我没有看到自己用 Gimp 一张一张地转换超过 500 张图像……这就是我转向 ImageMagick 的原因,特别是因为我越来越经常地动态转换图像文件,我想掌握这种类型的工具。

唉,使用 ImageMagick,尽管将密度设置为 600dpi,但默认情况下我会得到非常小的图像(类型 468x705):

convert *.pdf -density 600 -quality 100 *.jpg
Run Code Online (Sandbox Code Playgroud)

所以我添加了一个resize命令(我也尝试过scale),图像的清晰度要高得多(类型 4680x7050),但是像素化了,就好像我保持默认定义一样:

convert *.pdf -resize 1000% -density 600 -quality 100 *.jpg
Run Code Online (Sandbox Code Playgroud)

我什至认为它可能来自订单的顺序,但这并没有改变任何东西:

convert *.pdf -density 600 -resize 1000% -quality 100 *.jpg
Run Code Online (Sandbox Code Playgroud)

一个主意 ?

附属(但不太重要)问题:如何使目标文件的名称与原始文件相同?

编辑:除了 Mark Setchell 提出的 for 循环之外,我刚刚发现您可以使用mogrify. 例子:

mogrify -format jpg -density 600 -blur 1x1 -quality 100 *.pdf

Mar*_*ell 5

您可能想要这样的东西 - 请注意,您将 放在PDF 文件名-density 之前

for f in *.pdf; do convert -density 144 "$f" "${f%pdf}jpg"; done
Run Code Online (Sandbox Code Playgroud)

棘手的部分是删除pdf扩展名并将其替换为jpg,我使用了“bash Parameter Substitution”这里描述得很好。


从长远来看,那就是

for f in *.pdf; do 
   convert -density 144 "$f" "${f%pdf}jpg"
done
Run Code Online (Sandbox Code Playgroud)

另一种选择是mogrify

mogrify -density 144 -format jpg *pdf
Run Code Online (Sandbox Code Playgroud)

如果你安装了GNU Parallel,你可以像这样更易读、更快地完成它:

parallel convert -density 144 {} {.}.jpg ::: *pdf
Run Code Online (Sandbox Code Playgroud)