Generieren mehrsprachiger Textbilder mit Python

Lesen Sie Texte in verschiedenen Sprachen aus Excel und generieren Sie Bilder.

Als Beispiel wird das folgende Bild generiert. فارسی.png

Ein Ausführungsbeispiel wird auf [ipython notebook] veröffentlicht (http://nbviewer.ipython.org/urls/bitbucket.org/Shinaji/generate_text_images/raw/c39a3f5f185711a31be371b97aa53e292f1d583a/Generate%20text%20images.yn).

Sprachliste

Arabisch Katalanisch Englisch Spanisch Persisch Französisch Italienisch Koreanisch < th> Russisch Schwedisch Thai Ukrainisch Chinesisch
العربية Català Englisch Español فارسی Français Italiano 한국어 vensусский Svenska ไทย Українська Chinesisch
التعلم المتعمق Aprenentatge profund Deep Learning Aprendizaje profundo PR Tiefes Lernen d> / เรียน รู้ เชิง ลึก Глибинне навчання Tiefenstudie

Skript

python


from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
import numpy as np
import pandas as pd

#Load text list
df = pd.read_excel('example_words.xlsx', sheetname='Sheet1')
indices = df.columns.tolist()

#Generate text images
def generate_text_img(text, fontname='Arial', fontsize=64):
    font = ImageFont.truetype(fontname, fontsize, encoding="utf-8")
    img_size = np.ceil(np.array(font.getsize(text))*1.1).astype(int)
    img=Image.new('L', img_size, 'white')
    draw = ImageDraw.Draw(img)
    text_offset = (img_size - font.getsize(text))/2
    draw.text(text_offset, text, font=font, fill='#000')
    return img
    
fontname = '/Library/Fonts/Arial Unicode.ttf'
for index in indices:
    for text in df[index]:
        txt_img = generate_text_img(text, fontname=fontname, fontsize=64)
        txt_img.save(text+'.png', 'png')

Referenz

Recommended Posts