Как я могу написать текст поверх изображения и наложить на него другое изображение в Python? - PullRequest
9 голосов
/ 16 ноября 2011

Мне нужно поместить текст поверх изображения PNG в Python, мне нужно поместить другое изображение поверх первого.

Так что у меня будет базовое изображение (одинаковое для каждого созданного изображения), логотип для размещения над ним в верхнем левом углу и текст по всему изображению (неспецифический шрифт, мне просто нужно установить размер шрифта).

Могу ли я использовать PIL или другую библиотеку?

Я также провел поиск по StackOverflow и Google, но не смог найти советов, как это сделать.

Спасибо.

Ответы [ 3 ]

19 голосов
/ 16 ноября 2011

PIL может сделать это:

from PIL import Image, ImageFont, ImageDraw
font = ImageFont.truetype("/usr/share/fonts/dejavu/DejaVuSans.ttf", 25)
img = Image.new("RGBA", (200,200), (120,20,20))
draw = ImageDraw.Draw(img)
draw.text((0,0), "This is a test", (255,255,0), font=font)
draw = ImageDraw.Draw(img)
img.save("a_test.png")

Единственная ошибка, которая может возникнуть, это не найти шрифт. В этом случае вы должны изменить строку кода:

font = ImageFont.truetype("/usr/share/fonts/dejavu/DejaVuSans.ttf",25)

Источник: http://python -catalin.blogspot.com / 2010/06 / добавить текст на изображении с модулем pil.html

4 голосов
/ 18 апреля 2017

Мне кажется, opencv проще в использовании:

import cv2
import numpy as np
import matplotlib.pyplot as plt
image = cv2.imread('xxx.png')  
texted_image =cv2.putText(img=np.copy(image), text="hello", org=(200,200),fontFace=3, fontScale=3, color=(0,0,255), thickness=5)
plt.imshow(texted_image)
plt.show()

Обратите внимание, что исходное изображение может быть изменено, поэтому я добавляю np.copy для его защиты.Более подробная информация о функции: http://docs.opencv.org/2.4.8/modules/core/doc/drawing_functions.html?highlight=puttext#cv2.putText

fontFace можно сослаться на https://codeyarns.com/2015/03/11/fonts-in-opencv/

2 голосов
/ 16 ноября 2011

PIL - это один из подходов. Вы также можете взглянуть на ImageMagick , который также поддерживает наложение изображений и размещение текста в изображениях (и многих других).

Существует интерфейс Python для ImageMagick через PythonMagick .

...