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.