fontconv Windows パソコンで動かす

英語にしか対応していないフォントでも、Deep Learningで日本語もそれっぽく生成させる

GitHub – ka10ryu1/fontconv: フォントの生成

手順

git clone https://github.com/ka10ryu1/fontconv

準備

python ./create_dataset.py Font/00_yu_gothic_12pt.png Font/01_Berlin_Sans_FB_12pt.png
python Tools/npz2jpg.py result/test_128x128_000100.npz
python ./train.py

python ./predict.py --gpu 0 result/12mnv2l3.model result/12mnv2l3_train.json Font/test.png

入力画像を作成するプログラム

from PIL import Image, ImageDraw, ImageFont

# 入力パラメータ
text = r"""!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"""
font_path = "Y-Regular.ttf"  # 使用するフォントのファイルパス
font_size =50  # フォントサイズを大きく設定
char_image_size = (73, 73)  # 各文字画像のサイズ(幅、高さ)

# 文字の列数と行数を計算
num_cols = len(text) // 3 + (1 if len(text) % 3 else 0)  # 3行になるように列数を決定
image_width = char_image_size[0] * num_cols
image_height = char_image_size[1] * 3

# 全体の画像を作成(背景は白)
output_image = Image.new("RGBA", (image_width, image_height), (255, 255, 255, 255))
draw = ImageDraw.Draw(output_image)
font = ImageFont.truetype(font_path, font_size)

# 文字を描画
x, y = 0, 0
for index, char in enumerate(text):
    # 各文字のイメージ(背景は白)
    char_image = Image.new("RGBA", char_image_size, (255, 255, 255, 255))
    char_draw = ImageDraw.Draw(char_image)
    
    # 中央配置のために文字の描画位置を計算
    bbox = char_draw.textbbox((0, 0), char, font=font)
    w, h = bbox[2] - bbox[0], bbox[3] - bbox[1]
    position = ((char_image_size[0] - w) / 2, (char_image_size[1] - h) / 2/ 2/ 2)
    print(position)

    # 中央に文字を描画
    char_draw.text(position, char, font=font, fill="black")
    
    # 全体画像に配置
    output_image.paste(char_image, (x, y))
    x += char_image_size[0]
    
    # 1行が終わったら次の行へ
    if (index + 1) % num_cols == 0:
        x = 0
        y += char_image_size[1]

# 画像をPNGとして保存
output_image.save("output_text_image.png")
print("画像が保存されました: output_text_image.png")

Python

Posted by eightban