#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()]
, будет работать лучше. Кроме того, печать всего его содержимого подобным образом, вероятно, приведет к чрезмерному и нежелательному выводу.