pil.image.getdata() возвращает различную информацию о пикселях для файлов JPEG и PNG

Я пытаюсь получить информацию о пикселях двух разных файлов изображений (.jpg и.png), используя

from PIL import Image

#for jpg
im = Image.open('file1.jpg')
pixel_jpg = list(im.getdata())
#for png
im1 = Image.open('file1.png')
pixel_png = list(im.getdata())

и результат для pixel_jpg и pixel_png похожи

pixel_jpg = [(27, 45, 19), (26, 44, 20), (26, 44, 20), (26, 44, 20),...]
pixel_png = [(138, 68, 5, 255), (155, 81, 5, 255), (178, 94, 6, 255),...]

Что это за дополнительная информация о пикселях в изображении PNG и почему это так?

1 ответ

Решение

Четвертый столбец для png называется альфа, он используется для обозначения прозрачности. поскольку jpg не имеет атрибута альфа (потому что он не поддерживает прозрачность), .getdata() не будет включать их.

jpg использует цветовую схему RGB и png называется RGBA. Вот почему они дали разные результаты.

Как примечание: последний столбец 255 означает, что он полностью непрозрачен (0% невидим). Так как, как и другие атрибуты RGB, их всего 255.

Другие вопросы по тегам