Рубрики
Без рубрики

Постройте себе уродливой маленький джемпер … с силой Python!

Этот пост является частью календаря Адвента. Мы строим одно веб -приложение в день в течение 24 дней, используя n … с меткой Python, WebDev, Pillow.

Этот пост является частью Календарь Адвента наковальня Анкет Мы строим одно веб -приложение в день в течение 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”