Python–PIL: getdata()- метод не возвращает кортеж
Я довольно новичок в кодировании в целом (кодирую уже 4 месяца), и у меня есть вопрос о PIL-модуле Python.
Всякий раз, когда я звоню getdata()
- метод на изображении, я получаю что-то странное возвращается.
Из изображения импорта PIL:
# Histogram class to get the data
class Histogram:
def __init__(self, image):
image.convert("RGB")
pixel_value_list = list(image.getdata())
print(pixel_value_list[1])
image = Image.open("lenna.gif")
histogram = Histogram(image)
Но на консоль я не печатаю кортеж, а как-то 45... Понятия не имею... Мой вопрос: почему list(image.getdata())
не вернуть список с кортежами, а список полностью из целых чисел?
1 ответ
Решение
Если вы откроете файл с палитрой (например, GIF) и распечатаете список пикселей с помощью .getdata()
вы получите список индексов в палитре, например:
im = Image.open("composplot.gif")
print(list(im.getdata()))
Выход:
[0, 0, 0, 0, 0, 0, 0, 0, 6, 223, 0, 0, 46, 219, 195, ...]
Однако, если вы преобразуете палитризованное изображение в RGB-изображение, вы получите список (r,g,b) кортежей. Пример:
im = Image.open("composplot.gif")
imrgb = im.convert("RGB")
print(list(imrgb.getdata()))
Выход:
[(255, 255, 255), (255, 255, 255), (216, 216, 216), (8, 8, 8), (191, 191, 191), (255, 255, 255), ...]