R:使用magick在1个面板中显示4个png图像

Posted

技术标签:

【中文标题】R:使用magick在1个面板中显示4个png图像【英文标题】:R: Using magick to display 4 png images in 1 panel 【发布时间】:2021-04-11 12:34:36 【问题描述】:

我有许多从另一个脚本保存为 png 的图像(图):

x1.png x2.png x3.png x4.png y1.png y2.png

等等。我正在尝试制作这些的 gif,我已经在 magick 中成功完成了。但是,这会每帧循环 1 个图像。我正在尝试一次加载 4 张图像,并将它们拼接在一个面板上,并创建这些面板的 gif。

我已成功创建了这些图像的 gif。 但是,我想一次加载 4 张图像,然后将它们形成 gif。

y <- (list.files(path='foo/bar/', pattern = '*1.png', full.names = TRUE))
plot(y[1]) # does nothing

如何在一个面板中一次加载或显示 4 个 png? 我通常可以使用:

par(mfrow=c(2,2))
plot(a)
plot(b)
plot(c)
plot(d)

但是我正在使用 magick 加载 png(绘图,但我显然不能将它们视为常规绘图)

img1 <- magick::image_read("foo/bar/x1.png")
plot(img1) # does nothing
print(img1) # displays img 1 as a plot, and prints some details in the output window.

我确信我可以重写我的其他代码以显示 4 个图,并将它们保存为 1 个 png,但我正在尝试编写一个小的单独脚本来加载这些预先存在的图像,并将 png 拼接在一起。这可以使用 par(mfrow=c(2,2)) 吗?

我确定我错过了很多简单的东西。谢谢大家的时间。

【问题讨论】:

试试这个***.com/a/52286478/786542 在 ImageMagick 中使用蒙太奇。见legacy.imagemagick.org/Usage/montage cowplot 包中查看plot_grid() 【参考方案1】:

您可以使用蒙太奇在 ImageMagick 中做到这一点。例如

montage lena.jpg mandril3.jpg zelda1.jpg peppers.jpg -tile 2x2 -geometry +0+0 montage.gif

【讨论】:

我还在为这个愚蠢的问题道歉,但这对我来说不像是 R 代码。如何在 R 中执行该功能? (使用会产生错误) 对不起,这是命令行代码。不幸的是,我不知道 R 或 Rmagick。但是您的帖子从未提及 R,我也没有注意到您的标题中的 R:。【参考方案2】:

要在 R 中运行 ImageMagick 命令(或任何终端代码),您只需将其括在引号中并将其传递给函数 system()。

system("montage lena.jpg mandril3.jpg zelda1.jpg peppers.jpg -tile 2x2 -geometry +0+0 montage.gif")

【讨论】:

以上是关于R:使用magick在1个面板中显示4个png图像的主要内容,如果未能解决你的问题,请参考以下文章

R语言使用magick包的image_write函数将已有图像以任何指定的格式导出保存到磁盘上(例如将原文将从png转化为jpeg)

循环写入多个图像 [Magick, R]

使用Image Magick转换图像并显示结果

使用R magick包时出错

我如何创建图表和图像以显示在 R 的同一面板上

如何使用 R 中的 magick 包在图像边缘添加羽毛?