Этот пост является частью Календарь Адвента наковальня Анкет Мы строим одно веб -приложение в день в течение 24 дней, Использование ничего, кроме Python ! Это день 1, и мы начинаем с некоторых причудливых манипуляций с изображением.
Сегодня мы делаем уродливые рождественские прыгуны с силой Python.
Попробуйте это здесь!
https://christmas-jumper-generator.anvil.app
Просто зайдите в приложение и начните загружать изображения, чтобы увидеть, как они будут выглядеть, как только мы сыграли их во что -то, что вы могли бы положить на рождественский прыгун.
После того, как вы загрузили изображение в свой браузер, приложение отправляет его клиенту, где мы делаем с ним забавные вещи в Подушка Анкет Очень легко преобразовать объект Anvilmedia в объект подушки и наоборот, с помощью Bytesio :
from io import BytesIO from Pillow import Image def convert_blob_to_image(image_file_from_client): """Take an AvilMedia object from the client and turn it into a Pillow Image object.""" image = Image.open(BytesIO(image_file_from_client.get_bytes())) image = image.convert("RGB") # make sure we're using the right colour mode for what we want to do return image def convert_image_to_blob(image): """Prepare a Pillow Image object to be sent back to the client by turning into an Avil BlobMedia.""" with BytesIO() as buf: image.save(buf, format='PNG') # you could also use 'JPEG' here if you wished blob = anvil.BlobMedia('image/png', buf.getvalue()) return blob
Как только у нас есть подушка Экземпляр изображения Мы можем делать всевозможные странные и замечательные вещи.
Алгоритм в приложении работает так:
- Сбросит размер изображения шириной 50 пикселей с помощью
Image.Resize
- Ответствует цвета цвета на изображении, так что существует только ограниченное число, используя
Image.convert
и указатьцвета
(Число, которое я нашел счастливым, уродливым средством между «слишком занятым» и «неузначно немного») - Заменяет каждый цвет на изображении соответствующим образом оттенком рождества, используя
Image.getPixel
иImage.putpixel
Анкет Это также гарантирует, что верхний левый угла пикселя, который, скорее всего, будет каким -то фоном для загруженного изображения, окрашивается тем же оттенком, что и фоновый рождественский джампер, так что он выглядит без проблем. - увеличивает изображение, сохраняя «пикселированный» образ с
Повторный выбор. Ближайший
параметр кImage.Resize
метод - Защелка на фоновое изображение красного рождественского перемычки с помощью
Image.paste
Анкет
Если вы хотите увидеть код более подробно, вы можете клонировать приложение для себя и увидеть код сервера во всей его славе!
Открыт в наковальнике >>
Что дальше?
Если вы думали, что это круто, проверьте остальную часть наковальницы!
Отправляйтесь в Обучательный центр наковальвы Для получения дополнительных учебных пособий или отправиться в наш Примеры страница Чтобы увидеть, как построить несколько сложных приложений в наковальнике.
Больше учебных пособий на наковальни >>
Оригинал: “https://dev.to/eliholderness/build-yourself-an-ugly-little-jumper-with-the-power-of-python-oee”