Получение подсписка с 4 элементами

#python #python-imaging-library

#python #python-imaging-library

Вопрос:

Вот код. Длина подсписка должна быть 3 (RGB). Но я получил 4.

 import numpy as np
from PIL import Image

with Image.open("hash security.png") as img:
    width, height = img.size
    arr=list(img.getdata())
    print(arr)
 

Вот вывод фрагмента.

 [(255, 255, 255, 255), (255, 255, 255, 255), (255, 255, 255, 255)]
 

Комментарии:

1. возможно, это RGBa (где одно из значений указывает на прозрачность)

2. Распечатайте img.mode и посмотрите, какой формат пикселей у вас есть.

3. @martineau RGBA

4. Это означает, что изображение имеет «альфа» слой, указывающий на прозрачность каждого пикселя. Вы можете удалить его с img = img.convert("RGB") помощью .

Ответ №1:

Четвертый столбец для PNG называется alpha, он используется для обозначения прозрачности. Вы можете нарезать список, если он вам не нужен:

 with Image.open("hash security.png") as img:
    width, height = img.size
    arr=list(img.getdata())[:-1]
    print(arr)
 

Комментарии:

1. arr=list(img.getdata())[:-1] это просто нарезка последней части всего списка, но не альфа.

2. Wasif: я думаю arr = [p[:-1] for p in img.getdata()] , будет работать лучше. Кроме того, печать всего его содержимого подобным образом, вероятно, приведет к чрезмерному и нежелательному выводу.