Слайд 13
Алгоритм медианного среза решает задачу уменьшения количества цветов в изображении до 256 без значительной потери качества. Он работает в RGB-пространстве, рассматривая все пиксели как точки в трёхмерном цветовом кубе. На каждом шаге выбирается канал (R, G или B) с наибольшим разбросом значений, пиксели сортируются по этому каналу, и куб делится по медиане так, чтобы в каждой части было примерно одинаковое количество пикселей. Процесс повторяется рекурсивно до получения нужного числа блоков (например, 128). Средний цвет каждого блока становится цветом в итоговой палитре, что позволяет сохранить визуальную целостность изображения.
Слайд 14
Дизеринг Флойда-Штайнберга применяется для улучшения качества палитровых изображений, особенно при наличии плавных градиентов. Принцип работы заключается в распределении ошибки квантования — разницы между исходным цветом пикселя и ближайшим цветом в палитре — на соседние, ещё не обработанные пиксели. Для этого используется фиксированная матрица, которая определяет, какая доля ошибки передаётся вправо, вниз, влево и по диагонали. В результате соседние пиксели слегка «подкрашиваются», создавая иллюзию промежуточных цветов. В нашем проекте этот алгоритм реализован с помощью библиотеки Pillow, что позволяет сохранять чёткость контуров и плавность переходов.
Слайд 15
Одной из дополнительных функций бота является сборка многостраничных PDF-документов из загруженных изображений. Пользователь начинает сессию командой /pdf_start, отправляет изображения по порядку, а затем завершает сессию командой /pdf_done. Все изображения конвертируются в JPEG для унификации, а затем с помощью библиотеки img2pdf объединяются в один PDF-файл, где каждая картинка становится отдельной страницей. Кроме того, бот поддерживает удаление метаданных (EXIF и ICC) по команде /strip_exif on, что позволяет защитить конфиденциальность пользователя, удаляя информацию о геолокации, дате съёмки и параметрах камеры.
Слайд 16
Для эффективного взаимодействия с пользователем мы используем концепцию Машины состояний (FSM). FSM обеспечивает строгую последовательность шагов, предотвращая некорректные действия и направляя пользователя по заданному сценарию. Начинается взаимодействие с команды /start, после чего бот отправляет приветственное сообщение и переходит в состояние ожидания команд. Пользователь может выбрать нужную команду, отправить изображение, а бот будет обрабатывать его в соответствии с выбранными настройками. После завершения обработки результат отправляется пользователю, и сессия завершается. Этот подход делает взаимодействие интуитивно понятным и структурированным.
Слайд 17
Наша система разработана с акцентом на безопасность и надёжность. Настройки пользователей хранятся локально в изолированных JSON-файлах, что исключает риск утечки данных. Функция удаления метаданных позволяет пользователям контролировать конфиденциальность своих изображений. Кроме того, реализована комплексная валидация входных данных и обработка ошибок, что обеспечивает стабильную работу даже при некорректных запросах. Для повышения производительности и масштабируемости предусмотрена возможность интеграции с Redis для кэширования сессий. Эти меры гарантируют, что бот будет работать надёжно и безопасно в любых условиях.
