2013-09-04 4 views
3

Я пытаюсь преобразовать pdf-файл в файл png или jpeg. Причина в том, что я хочу использовать изображения для презентаций, и мне нужны оба формата, имеющие точно такие же размеры/масштабирование.Преобразование pdf в png в R

Я попробовал функцию 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

+0

Как вы имеете дело с тем, что внешнее приложение, которое вы используете для создания презентационных материалов, может по-разному масштабировать разные типы изображений? –

ответ

5

Результат im.convert, вероятно, не является удовлетворительным, поскольку он использует разрешение по умолчанию, который 74 dpi. Вы можете увеличить разрешение, передав дополнительный параметр:

im.convert("bm.pdf", output = "bm.png", extra.opts="-density 150") 

-density 150 удвоит разрешение и ваш PNGs и JPEGs будет выглядеть лучше.

Но в целом, вероятно, лучше использовать 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() 
+0

Спасибо, он работает очень хорошо. – aymer

+0

@aymer Возможно, вы захотите поддержать или принять этот ответ, если он предоставит вам решение вашей проблемы ... – f3lix