Crear imagen png transparente con Python – Pillow

Para crear un png transparente usando Python3, se usa la biblioteca Pillow. La biblioteca de Pillow viene con Python. Si Python no puede encontrar la biblioteca de Pillows, abra el símbolo del sistema y ejecute este comando:-

pip install Pillow

Nota: Si tiene algún problema para instalar Pillow usando pip, primero instale y configure pip. Para esto revisa este artículo.

Acercarse:

1. importa el módulo Imagen de la biblioteca de Pillow

from PIL import Image

2. Abra cualquier imagen y obtenga los valores de RAGBAG.

img = Imagen.open(‘imagen.png’)

rgba = img.convert(“RGBA”)

datos = rgba.getdata()

3. Cambia el color 

Los datos serán un objeto Imaging Core que contiene miles de tuplas de valores RGBA. Para hacer transparente el fondo primero tenemos que encontrar los valores RGBA del fondo o cualquier color que queramos hacer transparente. Aquí en esta imagen, el color de fondo es negro. 

El valor RGB del negro es (0, 0, 0). Ahora recorreremos los datos (valores RGBA) y cada vez que encontremos un píxel negro lo reemplazaremos con un valor RGBA transparente que es ((255, 255, 255, 0), y los otros colores permanecerán sin cambios. Y nosotros almacenará los valores en una nueva lista llamada newData.

nuevosdatos = []

para artículo en datos:

   si artículo[0] == 0 y artículo[1] == 0 y artículo[2] == 0:

       newData.append((255, 255, 255, 0))

   más:

      newData.append(elemento)

4. Guarde la imagen modificada

Almacene los datos nuevos en el valor RGBA y guarde la imagen en formato png (la imagen transparente no se puede almacenar en formato jpg o jpeg).

rgba.putdata(nuevosdatos)

rgba.save(“imagen_transparente.png”, “PNG”)

Implementación:

Python3

from PIL import Image
  
img = Image.open('image.png')
rgba = img.convert("RGBA")
datas = rgba.getdata()
  
newData = []
for item in datas:
    if item[0] == 0 and item[1] == 0 and item[2] == 0:  # finding black colour by its RGB value
        # storing a transparent value when we find a black colour
        newData.append((255, 255, 255, 0))
    else:
        newData.append(item)  # other colours remain unchanged
  
rgba.putdata(newData)
rgba.save("transparent_image.png", "PNG")

Producción:

Ahora, tomando la misma imagen, si queremos que el color amarillo sea transparente, necesitamos que los píxeles amarillos sean transparentes. Para esto, tenemos que encontrar el color amarillo por sus valores RBG (255, 255, 0) y reemplazarlo con (255, 255, 255, 0).

El nuevo código se ve así: 

Python3

from PIL import Image
  
img = Image.open('image.png')
rgba = img.convert("RGBA")
datas = rgba.getdata()
  
newData = []
for item in datas:
    if item[0] == 255 and item[1] == 255 and item[2] == 0:  # finding yellow colour
        # replacing it with a transparent value
        newData.append((255, 255, 255, 0))
    else:
        newData.append(item)
  
rgba.putdata(newData)
rgba.save("transparent_image.png", "PNG")

Producción:

Aquí hacemos transparente el color amarillo.

Publicación traducida automáticamente

Artículo escrito por santanunandi01 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *