在R中将pdf转换为png

10
我尝试将PDF图表转换为PNG或JPEG文件。原因是我想将这些图片用于演示,并且我需要两种格式,它们的尺寸/缩放完全相同。
我尝试了动画包中的im.convert()函数,但输出的PNG和JPEG都非常糟糕。
要能运行以下代码,您需要“动画”包和ImageMagick软件(http://www.imagemagick.org/script/convert.php)。
library("animation")
ani.options(outdir = getwd())

pdf("bm.pdf")
plot(1:10)
dev.off()

im.convert("bm.pdf", output = "bm.jpeg")
im.convert("bm.pdf", output = "bm.png")

1
通常的方法是从创建图形的代码中直接以所需格式保存。有更好的工具可以将PDF转换为PNG,例如直接使用ImageMagick而不是从R中调用。要从ImageMagick获得更好的结果,您需要调整选项。 - Roland
你是如何应对使用外部应用程序生成演示材料时,不同类型的图像可能会被缩放不同的事实的? - Carl Witthoft
这个问题的答案涵盖了@Roland提出的“从创建图形的代码中以所需格式简单保存”的“常规方法”。 - jan-glx
1个回答

16

im.convert 的结果可能不尽人意,因为它使用的默认分辨率是 74 dpi。您可以通过传递一个额外的参数来增加分辨率:

im.convert 的结果可能不那么理想,因为它使用默认分辨率 74 dpi。您可以通过传递额外参数来提高分辨率:

(Two possible translations with minor variations.)
im.convert("bm.pdf", output = "bm.png", extra.opts="-density 150")

-density 150 将会提高分辨率,从而使你的 PNG 和 JPEG 图像看起来更加清晰。

但通常情况下,最好使用 png()jpeg() 来生成图形,并使用适当的参数来获得与 pdf() 相同的结果。例如:

pdf(width=5, height=5)
plot(1:10)
dev.off() 

png(width=5, height=5, units="in", res=150) 
plot(1:10)
dev.off()

值得注意的是,这需要安装pdftools。 - pluke

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接