Alr*_*ick 7 pdf imagemagick conversion png
我想使用 .pdf 将 PDF 转换为 PNG 图像convert
。图像必须符合 1920x1080 比率,具有 ?x1080 比率,并具有最佳质量。
这里有很多我可以使用转换的选项:https : //imagemagick.org/script/command-line-options.php#append
convert my.pdf -geometry 1920x1080 -size 1920x1080 -density 1920x1080 my_resized_pdf.png
命令的结果为我提供了具有良好几何形状 (763x1080) 的图像,但我不想获得低质量的图像。
convert my.pdf -size 1920x1080 -density 1920x1080 my_resized_pdf.png
结果的质量正是我想要的,但分辨率不是 1920x1080 比例,而是 842x595。它并不完全适合 1920x1080 的高度。
是否可以从 PDF 中获得 ?x1080 比例和 100% 质量的 PNG 图像?或者 842x595 是获得 100% 质量图像的最大比例?我应该将 DPI 选项设置为convert
吗?
这涉及一些反复试验,最终,您可能认为哪个结果是“最佳结果”是有争议的。所以请允许我给出一些通用的建议:
使用该-flatten
选项摆脱透明背景。透明度使得很难判断结果的实际质量。如果您需要最终图像中的透明度,您可以-flatten
在确定质量后删除。
使用类似的东西-density 300
来获得高 DPI 结果。主要问题convert
是它默认使用非常低的密度(72 DPI)。此参数必须在输入文件之前指定。
缩小高 DPI 图像可能会导致额外的模糊,因此也许计算正确的 DPI 值以实现所需的分辨率是可行的方法:
$ convert -density 100 file.pdf -flatten file100.png
$ file file100.png
file100.png: PNG image data, 827 x 1169, 8-bit colormap, non-interlaced
$ echo $((1080*10000/1169))
9238
$ convert -density 92.38 file.pdf -flatten file9238.png
$ file file9238.png
file9238.png: PNG image data, 764 x 1080, 8-bit colormap, non-interlaced
Run Code Online (Sandbox Code Playgroud)我不确定是否有办法convert
自行确定“理想”的 DPI 值。
如果您将此问题带到 ImageMagick IRC 频道或论坛,我相信您会得到更多建议。如果您提供指向您正在使用的 PDF 文件的链接,它会有所帮助。;)
您还可以通过其他方式提高质量,例如通过修剪空白边框。如果页面的一半是白色的,您将失去很多分辨率。甚至还有一些解决方案可以重新包装 PDF 文本以充分利用可用的屏幕空间(例如k2pdfopt
)。
最后,还尝试其他程序。这是一个见仁见智的问题,但我更喜欢直接使用 Inkscape 或 GhostScript。ImageMagick 将字符“粘合在一起”,Inkscape 具有更平衡的结果,GhostScript 允许您渲染无模糊的纯像素图像(如果您喜欢这种图像 -pngalpha
用于模糊版本,它几乎与 相同convert
)。
图像魔法:
墨景:
幽灵脚本:
gs -r92.38 -sDEVICE=png48 -sOutputFile=ghostscript.png file.pdf
Run Code Online (Sandbox Code Playgroud)