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

问题描述 投票:0回答:3

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

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

等等。我正在尝试制作这些动图,我已经在 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)) 可以吗?

我确信我错过了很多简单的事情。谢谢大家的宝贵时间。

r plot imagemagick png gif
3个回答
0
投票

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

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

enter image description here


0
投票

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

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

0
投票

我知道原来的帖子已经很旧了,但我想为搜索它的任何人提供一个 R 代码解决方案。这是一个简单的示例,使用 {magick} 包中名为 logo 的图像:

library(magick)

# Use the logo included in the {magick} package
input <- rep(logo, 4)

# Create a panel (a montage)
p <- image_montage(input, geometry = 'x100+20+10', tile = '2x2', bg = 'black')

# Display the panel
p

此脚本创建具有指定几何形状和黑色背景的徽标图像的 2x2 蒙太奇。黑色背景通常可用于创建面板布局,如果愿意,可以将其更改为白色。最后,您可以右键单击 RStudio 查看器窗格中的图像,选择“将图像另存为...”,然后为其命名,例如“panel.gif”。

您可以在下面看到最终结果。请注意,我将实际徽标替换为文本“在这里您将看到徽标图像”,因为我不确定 {magick} 包中包含的徽标图像的许可条款。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.