如何删除在R中使用png()包装的图像周围的边距

如何删除在R中使用png()包装的图像周围的边距,r,image,image-processing,png,R,Image,Image Processing,Png,我试图用R覆盖两个PNG图像(不是透明的)。为此,我的逻辑如下:我使用readPNG()读取两个图像。然后,我使用abind()添加一个alpha通道,例如,我将其设置为0.5,以使图像半透明。到目前为止,所有这些都很有效,我的问题是,当我使用png()覆盖图像时,输出图像有一个白色边距。这种情况经常发生,即使我使用par()将边距设置为0。我错过了什么 请在下面找到一个简单的工作示例: library("png") library("abind") # Download two rando

我试图用R覆盖两个PNG图像(不是透明的)。为此,我的逻辑如下:我使用
readPNG()
读取两个图像。然后,我使用
abind()
添加一个alpha通道,例如,我将其设置为
0.5
,以使图像半透明。到目前为止,所有这些都很有效,我的问题是,当我使用
png()
覆盖图像时,输出图像有一个白色边距。这种情况经常发生,即使我使用
par()
将边距设置为
0
。我错过了什么

请在下面找到一个简单的工作示例:

library("png") 
library("abind")

# Download two random pictures
pngURL1 <- "https://imgur.com/download/0ljEVEW"
pngURL2 <- "https://imgur.com/download/oShoMag"
download.file(pngURL1, "temp1.png", mode = "wb")
download.file(pngURL2, "temp2.png", mode = "wb")

# Load downloaded images and add alpha channel
img1 = readPNG("temp1.png")
img1 = abind::abind(img1, img1[,,1]) # add an alpha channel
img2 = readPNG("temp2.png")
img2 = abind::abind(img2, img2[,,1]) # add an alpha channel

# Make semi-transparent
img1[,,4] <- 0.5
img2[,,4] <- 0.5

# Create output image
png('test.png', width = 480, height = 360)
par(mar = c(0,0,0,0))
plot.new()
rasterImage(img1, 0, 0, 1, 1)
rasterImage(img2, 0, 0, 1, 1)
dev.off()
library(“png”)
图书馆(“abind”)
#下载两张随机图片

pngURL1不需要的边距是轴范围计算的结果。默认情况下,轴范围超出数据范围4%。要解决此问题,您可以将
par
中的
xaxs
yaxs
参数设置为
i
--内部样式

例如:

par(mar = c(0,0,0,0), xaxs="i", yaxs="i")
结果是:

太棒了!非常感谢,我没有意识到这种默认行为以及如何避免它。