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

Как Haptik генерирует изображения на мухе с Python

Используйте подушку для создания пользователей персонализированных изображений динамически. Помечено Python, WebDev, Showdev, Automation.

Компьютерная графика Обучает нам, как пиксель на экране может быть манипулирован для рисования красивых фигур, художественная типография, привлекательные иллюстрации, «Сделай мне – хорошо» Фотофильтры и намного больше. Производители оборудования, исследователи, разработчики программного обеспечения работают вместе, чтобы построить отличные продукты: смартфоны, SmartWatches, смарт-телевизоры, камеры все с изучением компьютерной графики.

Несмотря на то, что компьютерная графика так быстро развивалась, а также разработка программного обеспечения, как Adobe Photoshop, Adobe Illustrator, эскиз сделала нашу жизнь проще в значительной степени, мы все еще не можем генерировать изображения на лету с ними. Чтобы сделать это, нам нужно будет достичь уровня, в котором нет перетаскивания, никаких причудливых сочетаний клавиатуры Select-All-Make-Bold, нет обрезки и копирования.

И мы не можем добраться туда по путешествиям времени, но, конечно, с кодом!

Начиная

Приходите, откройте свой любимый текстовый редактор, следуйте за мной, и я помогу вам нарисовать динамические текстовые данные на изображениях. Я предполагаю, что у вас есть Python и Пип Установлено на вашем компьютере, но если нет, выполните шаги в ссылках, чтобы настроить среду разработки. После завершения настройки из оболочки выполните приведенную ниже команду для установки Подушка (Подробнее Здесь ) и его зависимости.

pip install pillow

Как вы установили все зависимости, давайте перейдем вперед и напишем какой-то код. Подушка – это обширная библиотека, но для нашей цели мы будем использовать следующие классы:

  • Изображение : Чтобы создать объект изображения для нашего приветствия
  • ImagedRaw : создает контекст рисования
  • ImageFont : шрифт текста мы будем рисовать на приветствии

Давайте возьмем следующее фоновое изображение и инициализируйте его следующим кодом:

# import required classes

from PIL import Image, ImageDraw, ImageFont

# create an Image object with the input image

image = Image.open('background.png')

# initialize the drawing context with
# the image object as background

draw = ImageDraw.Draw(image)

Для создания объектов ImageFont мы также нуждаемся в файлах Font (TTF, OTF), вы можете использовать любой шрифт по вашему выбору, здесь я буду использовать Робото шрифт, который можно скачать из Google шрифтов Github репо.

# create font object with the font file and specify
# desired size

font = ImageFont.truetype('Roboto-Bold.ttf', size=45)

# starting position of the message

(x, y) = (50, 50)
message = "Happy Birthday!"
color = 'rgb(0, 0, 0)' # black color

# draw the message on the background

draw.text((x, y), message, fill=color, font=font)
(x, y) = (150, 150)
name = 'Vinay'
color = 'rgb(255, 255, 255)' # white color
draw.text((x, y), name, fill=color, font=font)

# save the edited image

image.save('greeting_card.png')

Ниже вы получаете то, что вы получаете после выполнения вышеуказанного кода:

С некоторыми шрифтами вам, возможно, придется пройти дополнительный параметр кодирование который сообщает модуль ImageFont, который кодирует для использования при открытии файла шрифта.

Компьютерная графика имеет перевернутую систему координат, Происхождение (0, 0) Это лежит в верхнем левом углу изображения. x Здесь представляет расстояние текстового поля слева (х = 0) и y представляет расстояние от верхней части (y = 0) Отказ

Хотя вы сохраняете изображение, вы можете пройти дополнительные параметры, такие как оптимизировать и Качество Чтобы контролировать размер выходного изображения.

image.save('optimized.png', optimize=True, quality=20)

Это генерирует выходное изображение Optimize.png с уменьшенным качеством, но меньшим размером.

Где мы используем подушку с Python?

Находясь на работе, я недавно разработал функцию, которая требовала создание изображения лидеров на лету , с пользовательскими данные рекорда викторины. И просто с несколькими строками кода я смог создать так, как это:

Вуаля! Он выглядел отлично, и мы решили использовать идею создания изображений на ходу, и для других случаев использования. В настоящее время мы используем подушку для генерации изображений для шуток, мотивационных цитатов, гороскопов, слов дня и т. Д. В режиме реального времени и с данными из разных ответов API.

Код, который мы использовали в этом посте, недостаточно для рисования текстовых ящиков, как показано на изображениях выше. Я буду писать Еще один пост Что будет сосредоточиться на выравнивании текста, разделение длинного текста в несколько строк, контролирующее пространство между двумя линиями и более.

Я недавно прочитал сообщение @ben, в котором он писал о том, как dev.to динамически генерирует социальные изображения. Я понял, что сделал что-то похожее на работе, так почему бы не поделиться с сообществом.

Пожалуйста, дайте мне свой отзыв, если какие-либо в разделе комментариев ниже.

Этот пост был изначально написан для Haptik Tech Blog .

Оригинал: “https://dev.to/vinayjn/how-haptik-generates-images-on-the-fly-with-python–1pnl”