Вот один вариант, используя 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()