Распечатать набор изображений в квадратную мозаику - PullRequest
0 голосов
/ 12 сентября 2018

Предположим, у нас есть набор идентичных изображений 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 голосов
/ 12 сентября 2018

Это очень хороший вопрос!

Сначала давайте случайным образом выберем, сколько изображений мы хотим, а затем автоматически рассчитаем, сколько строк / столбцов нам потребуется.

# 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...