以正方形马赛克打印图像集

时间:2018-09-12 11:29:55

标签: r image plot

假设我们有一组相同的图像imgs(请参见下文)。请注意,实际设置的长度可能会有所不同。

library(magick)
library(rsvg)

img <- image_read_svg("https://image.flaticon.com/icons/svg/132/132233.svg", width = 30)
imgs <- replicate(8, img)

enter image description here

目标是打印包含imgs中所有图像的正方形图像(即使设置的长度可能不是平方数):

enter image description here

我在image_append()包中使用image_append(..., stack = TRUE)magick,但没有成功[ref]。理想情况下,我想要一个函数(例如printMosaic(imgs))作为输入imgs并输出上面显示的平方图像。也许使用其他软件包更容易实现?

1 个答案:

答案 0 :(得分:2)

这是一个很好的问题!

首先,让我们随机选择所需的图像数量,然后自动计算所需的行数/列数。

# Number of images from 1 to 100
N <- sample(1:1e2, 1)
print(N)
[1] 84
# How many rows/columns we will need
X <- ceiling(sqrt(N))
print(X)
[1] 10

使用multipanelfigure包中有X行和列的空白面板:

library(multipanelfigure)
figure <- multi_panel_figure(columns = X, rows = X)

# Iterate from 1 to N images and append them to figure
for(i in seq_len(N)) {
    # "./R.png" is path to image I'm using
    # With this package you don't need to worry about importing images
    figure %<>% fill_panel("./R.png", label = "", scaling = "shrink")
}

enter image description here