如何删除在R中使用png()包装的图像周围的边距
我试图用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
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")
结果是:
太棒了!非常感谢,我没有意识到这种默认行为以及如何避免它。