Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ImageMagick 使用笔记 #178

Closed
Dream4ever opened this issue Jan 11, 2022 · 0 comments
Closed

ImageMagick 使用笔记 #178

Dream4ever opened this issue Jan 11, 2022 · 0 comments
Labels
Software About installation ande usage

Comments

@Dream4ever
Copy link
Owner

Dream4ever commented Jan 11, 2022

运行

Windows 版本的所有可执行文件(.exe)都在软件根目录下,默认路径为 c:\Program Files\ImageMagick-7.1.0-Q16-HDRI\

PDF 转图片

搜索资料

示例命令

.\convert.exe
  -density 320
  'c:\d\e.pdf'
  -quality 100
  c:\temp\png\output.png

输出路径设置

不管是在 Windows 下还是 Linux,都要注意 ImageMagick 在输出文件的目录下有写权限,否则会报 permission denied 类似的错误。

清晰度设置

-density 参数决定了输出图片 DPI 的大小,对于行知天下答案,这个参数值设置为 320,输出图片的宽度为 1335px,文件体积为 33.3KB。如果将参数值降为 160,输出图片的宽度和文件体积也都会降一半。但如果 -quality 参数的值都是 100,则输出图片的清晰度都是 OK 的。

-quality 参数的值设置为 100,输出的图片就很清晰了。

尺寸设置

如果用 -resize 1280x 参数将输出图片的宽度调整为 1280px,那么输出图片的原始色彩数会是 64bpp(bits per pixel)。不加这个参数的时候,输出图片的默认原始色彩数是 8bpp。这样的话,输出行知天下答案的时候,就不加这个参数了。

文件名设置

在将多页 PDF 输出为图片文件的时候,ImageMagick 会自动在设定的文件名(不含扩展名)后面加上 -1-2 这样的后缀,用来标记图片文件与原始 PDF 页码的对应关系。

PNG 相关

在将 PDF 转换为 PNG 图片时,ImageMagick 默认输出的是透明背景的 PNG。如果增加对应参数输出白色背景的 PNG,会发现文件体积反而大了不少,那还不如按默认参数来,生成体积更小的 PNG。

依赖环境

在另一台电脑上全新安装 ImageMagick 之后,执行前面的 convert 命令将 PDF 转换为图片时,报下面的错误:

PS C:\Program Files\ImageMagick-7.1.0-Q16-HDRI> .\convert.exe -density 320 'C:\Downloads\temp2\1.pdf' -quality 100 'C:\Downloads\temp2\png\output.png'
convert.exe: FailedToExecuteCommand `"gswin64c.exe" -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=pngalpha" -dTextAlphaBits=4 -dGraphicsAlphaBits=4 "-r320x320" -dPrinted=false  "-sOutputFile=C:/AppData/Local/Temp/magick-AqmmIj_klIA9DLkNTicVWh3kgRBopLQG%d" "-fC:/AppData/Local/Temp/magick-jWh82d1BX1MGengqQH2ZXs_v0qFrBrF2" "-fC:/AppData/Local/Temp/magick-eaJwCdNd-2B_BlWENDIBVvV9dtNLL72W"' (系统找不到指定的文件。
) @ error/delegate.c/ExternalDelegateCommand/516.
convert.exe: PDFDelegateFailed `系统找不到指定的文件。
' @ error/pdf.c/ReadPDFImage/714.
convert.exe: no images defined `C:\Downloads\temp2\png\output.png' @ error/convert.c/ConvertImageCommand/3327.

Google 之后发现 ImageMagick 原来只是将相关参数传给 GhostScript,让后者来将 PDF 转换为图片(参考链接:Imagemagick Convert PDF to JPEG: FailedToExecuteCommand `"gswin32c.exe" / PDFDelegateFailed)。而且这个链接里的回答者都说不如直接用 GhostScript,转换更快,没必要用 ImageMagick 再中转一层,下回可以研究研究。

@Dream4ever Dream4ever added the Software About installation ande usage label Jan 11, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Software About installation ande usage
Projects
None yet
Development

No branches or pull requests

1 participant