import barcode
from barcode.writer import ImageWriter
from io import BytesIO
from PIL import Image, ImageDraw, ImageFont
# Создаем файл в оперативной памяти
fp = BytesIO()
# Создаем основу баркода
EAN = barcode.get_barcode_class('ean13')
# Подключаем шрифт чтобы писать текст на русском
font = ImageFont.truetype("arial.ttf", size=32)
# Создаем баркод с на основе числа 012345678910
EAN('012345678910', writer=ImageWriter()).write(fp)
# Преобразовываем баркод в изображение
image = Image.open(fp)
# Сохраняем размеры изображения
width, height = image.size
# Увеличиваем изобраение вниз на 100 пикселей
image = image.crop((0, 0, width, height+100))
# Создаем объект рисовалки
draw = ImageDraw.Draw(image)
# Закрашиваем дорисованную часть изображения в белый
draw.rectangle((0, height, width, height+100), fill='white')
# Пишем текст
draw.text((75, height + 18), "Ваш текст", fill='black', font=font)
# Для центрирования текста по высоте, к высоте прибавить
# половину добавленного пространства минус размер шрифта
# (100 / 2 - 32 = 18)
# Раскоментировать и указать путь
# image.save("D:/barcode.png")
image.show()