наложение 2 изображений с прозрачностью в R - PullRequest
1 голос
/ 30 июня 2019

У меня есть 2 изображения, которые я импортирую в R:

image_A <- load.image('C:/Image test/testA.jpg')
image_B <- load.image('C:/Image test/testB.jpg')

Я хотел бы наложить / наложить изображение B на A и применить прозрачность к изображению B.

Как я могусделать это?

1 Ответ

1 голос
/ 30 июня 2019

Вот один вариант, используя rasterImage из базы R.

Сначала давайте получим два изображения.Для первого мы читаем в логотипе R JPEG.Затем добавьте еще один слой массива для хранения альфа-канала (jpegs не имеют прозрачности)

img.logo = jpeg::readJPEG(system.file("img", "Rlogo.jpg", package="jpeg"))
img.logo = abind::abind(img.logo, img.logo[,,1]) # add an alpha channel

Для второго изображения, давайте сделаем массив таким же размером, как у img.1, но залейм его случайными цветами

img.random = img.logo
img.random[] = runif(prod(dim(img.random))) # this image is random colors

Теперь давайте установим базовое изображение полностью непрозрачным, а логотип R - полупрозрачным

img.logo[,,4] = 0.5  # set alpha to semi-transparent
img.random[,,4] = 1  # set alpha to 1 (opaque)

Теперь у нас есть примеры изображений, которые мы можем наложить, используя rasterImage.

png('test.png', width = 2, height = 2, units = 'in', res = 150)
  par(mai=c(0,0,0,0))
  plot.new()
  rasterImage(img.random, 0, 0, 1, 1)
  rasterImage(img.logo,   0, 0, 1, 1)
dev.off()

enter image description here

...