= list(range(0, 256+x, x))[bit//x]
out.append(bit)
как это можно оптимизировать?
list(im.tobytes()) очень большой, заваеи много памяти и обработка занимает много времени
Оптимизировать в плане? По производительности?
Это какая-то обфускация? Что оно делает?
картинки глючит
Выглядит как шифр Цезаря, но чёт лениво разбираться
Полагаю в pillow могут быть готовые фильтры для этого. Либо бери numpy
- заменить list(im.tobytes()) на im.tobytes(). Зачем лишний раз копировать все байты картинки? - bit = list(range(0, 256+x, x))[bit//x] - заменить на формулу, которая вычисляет нужно значение, а не генерирует для этого в памяти список. - ещё можно заменить деление на константу x на умножение на производную константу 1/x. В теории должно быть быстрее. Придётся правда целую часть получать явно через int(...).
спасибо за совет, но я сделал точь-в-точь как ты расписал, ещё до того как ты написал :)
Если с формулой будут проблемы, то можно перед циклом сгенерировать один раз список который реализует преобразование in_bit в out_bit, а не генрить списки и делать деления на константу для каждого байта
Так а что этот код делает?
мне, честно говоря, самому интересно
Ещё можно ради эксперимента заменить список out на bytearray, т.к. итоговый размер известен заранее - будет меньше перевыделений памяти под список при увеличении его размера.
Обсуждают сегодня