UP | HOME |

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

2025-11-19

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.

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")