在R中叠加2张具有透明度的图像

时间:2019-06-30 04:13:34

标签: r image overlay

我在R中导入了2张图片:

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

我想将图像B叠加/叠加到A上,并对图像B施加透明度。

我该怎么办?

1 个答案:

答案 0 :(得分:1)

这是一个选择,使用基数R中的rasterImage

首先让我们获取两个图像。首先,我们阅读R徽标jpeg。然后添加另一个数组图层以容纳Alpha通道(JPEG不透明)

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