Python, PIL библиотека имеет Image.getdata()
метод, который возвращать необработанные данные изображения, письма:В Python, как преобразовать массив бит в массив байтов?
list(im.convert("1").getdata())
будет возвращать массив битов. Каждый бит соответствует одному пикселю изображения - пиксель может быть только черным или белым из-за режима «1».
Я хотел бы иметь массив, размер которого в 8 раз меньше. Каждый элемент массива содержит один байт.
Мои вопросы:
- 1. Могу ли я получить такой массив байтов непосредственно из PIL?
- 2. Если нет, то как преобразовать массив бит, возвращаемых PIL, в меньший массив байтов?
В случае массива бит, который использует значения, отличные от 0 и 1, исправить 'byte [b]' соответственно, например. вместо этого используйте '[0,1] [byte [b]> 0 ]'. – przemoc
Это то, что вы получаете, когда становитесь неактуальным пользователем языка ... Весь zip (* [itertools.islice (bits, i, None, 8) для i в диапазоне (0,8)]) может быть явно упрощается в 'zip (* (iter (bits),) * 8)'. Я также исправлю это в ответе. – przemoc
После изменения порядка бит работает как шарм! Большое спасибо! – mnowotka