eightban's memo

残しておきたい記事をまとめてみました。このブログに書いてあるドキュメントやブログで配布しているファイルの使用によって発生するいかなる損害に対してもこのブログの管理者は責任を負いません。使用する場合は自己責任のもとに使用してください。

Python

テキストファイルを読んで画像に縦書きの日本語文字を入れる方法

投稿日:

方法

from PIL import Image, ImageDraw, ImageFont, ImageFilter

def generate_img(text_line, imgname, filename):
    
    text_x = 100
    text_y = 50
    fill='black' 
    fill='red' 
    direction='ttb'
 #    direction='rtl'
    font_size = 72
    font_name = './GN-KillGothic-U-KanaO.ttf'
    font = ImageFont.truetype(font_name, font_size)
    img = Image.open(imgname)
#    img = Image.new('RGB', (500, 500), (128, 128, 128))
#    img.putalpha(0)

    draw = ImageDraw.Draw(img)
    draw.text((text_x, text_y),
              text_line,
              font=font,
              fill=fill, 
              direction=direction
              )

    img.save(filename)

def read_file(file_path):
    with open(file_path, 'r', encoding='utf-8') as file:  # ファイルをUTF-8エンコーディングで読み込み
        return file.readlines()

def main():
    imgname = 'dwpose.png'
    file_path = "a.txt"  # 入力ファイル名を固定化
    lines = read_file(file_path)

    for index, line in enumerate(lines):
        line = line.strip()
        if line:
 #            imgname = f"input_folder/"+(str(index).zfill(3))+f".png"  
            output_filename = f"dat/"+(str(index).zfill(3))+f".png"  # 出力ファイル名を固定化
            generate_img(line,imgname,output_filename)
            print(f"img '{output_filename}' generated successfully!")

if __name__ == '__main__':
    main()

固定の画像でもできますが連番の画像ファイルを用意すると個別の画像に文字列入れることができます

透明な背景や単色の背景も指定できます

-Python

Copyright© eightban's memo , 2024 All Rights Reserved Powered by STINGER.