在方形马赛克中打印图像集

问题描述 投票:1回答:1

假设我们有一组相同的图像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并输出上面显示的平方图像。也许用不同的包装更容易实现?

r image plot
1个回答
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

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