UP | HOME |

Añadir una máscara de transparencia a un PNG con R

2026-01-15

Añadir una máscara de transparencia a un PNG con R

Deseamos que un fichero png sea transparente. Esto significa convertir una array de 3 dimensiones a 4 dimensiones al añadir una capa indicándole dónde es la transparencia.

Destaco la función plotarray (plotarray, plotpng, plotpng) que representa una matriz de datos como una imagen. Es la función que suelo usar para visualizar png.

library(png)
plot_array <- function(image,rowlimits=c(1L,dim(image)[1]),collimits=c(1L,dim(image)[2]),...){
    par(mai=c(0,0,0,0),bty="n",bty = "n", xaxs = "i", yaxs = "i", xaxt = "n", yaxt = "n", col = "white") # margins
    plot(collimits, rowlimits, type = "n", xlab = "", ylab = "",...)
    rasterImage(image, 1, 1, dim(image)[2], dim(image)[1],...)
}

sello01 <- readPNG("sellouniovidegradado.png")
plot_array(sello01)
str(sello01)

mask <- matrix(1, dim(sello01)[1],dim(sello01)[2])
mask[sello01[,,1]==1 & sello01[,,2]==1 & sello01[,,3]==1] <- 0
dim(mask) <- c(dim(sello01)[1],dim(sello01)[2])
str(mask)
plot_array(mask)

sello03 <- array(c(sello01,mask),dim=c(dim(sello01)[1],dim(sello01)[2],4))
plot_array(sello03)

writePNG(sello03,"sellouniovidegradadomask.png")