条件
・画像サイズは横1280px ✕ 縦720px
・背景は白、テキストは黒で2行、中央寄せ
・画像形式はjpg
from PIL import Image, ImageDraw, ImageFont
def create_thumbnail(text_line1, text_line2, output_file):
# 画像サイズ(1280x720)
width, height = 1280, 720
background_color = (255, 255, 255) # 背景色:白
# 画像の作成
img = Image.new('RGB', (width, height), background_color)
draw = ImageDraw.Draw(img)
# フォントの設定(システムフォントを使用)
try:
font = ImageFont.truetype("arial.ttf", 80) # フォントサイズ80(適宜変更可)
except IOError:
font = ImageFont.load_default()
# テキストの色と位置
text_color = (0, 0, 0) # テキスト色:黒
# 各行のテキストを中央に配置するためにテキストのbounding boxを取得
text1_bbox = draw.textbbox((0, 0), text_line1, font=font)
text2_bbox = draw.textbbox((0, 0), text_line2, font=font)
# テキストの幅と高さを取得
text1_width, text1_height = text1_bbox[2] - text1_bbox[0], text1_bbox[3] - text1_bbox[1]
text2_width, text2_height = text2_bbox[2] - text2_bbox[0], text2_bbox[3] - text2_bbox[1]
# テキストの座標を計算して中央に配置
text1_position = ((width - text1_width) // 2, height // 3 - text1_height // 2)
text2_position = ((width - text2_width) // 2, 2 * height // 3 - text2_height // 2)
# テキストを描画
draw.text(text1_position, text_line1, fill=text_color, font=font)
draw.text(text2_position, text_line2, fill=text_color, font=font)
# 画像をJPEG形式で保存
img.save(output_file, "JPEG")
print(f"サムネイルを {output_file} に保存しました!")
# テキストの入力
text_line1 = input("1行目のテキストを入力してください: ")
text_line2 = input("2行目のテキストを入力してください: ")
# サムネイルを生成
create_thumbnail(text_line1, text_line2, "thumbnail.jpg")
しかしこのままだと日本語のテキストが非表示になってしまう。
日本語に対応したプログラムはこちら。
from PIL import Image, ImageDraw, ImageFont
def create_thumbnail(text_line1, text_line2, output_file):
# 画像サイズ(1280x720)
width, height = 1280, 720
background_color = (255, 255, 255) # 背景色:白
# 画像の作成
img = Image.new('RGB', (width, height), background_color)
draw = ImageDraw.Draw(img)
# 日本語フォントの設定
try:
font = ImageFont.truetype("NotoSansCJK-Regular.ttc", 80) # フォントファイルとサイズ
except IOError:
font = ImageFont.load_default()
# テキストの色と位置
text_color = (0, 0, 0) # テキスト色:黒
# 各行のテキストを中央に配置するためにテキストのbounding boxを取得
text1_bbox = draw.textbbox((0, 0), text_line1, font=font)
text2_bbox = draw.textbbox((0, 0), text_line2, font=font)
# テキストの幅と高さを取得
text1_width, text1_height = text1_bbox[2] - text1_bbox[0], text1_bbox[3] - text1_bbox[1]
text2_width, text2_height = text2_bbox[2] - text2_bbox[0], text2_bbox[3] - text2_bbox[1]
# テキストの座標を計算して中央に配置
text1_position = ((width - text1_width) // 2, height // 3 - text1_height // 2)
text2_position = ((width - text2_width) // 2, 2 * height // 3 - text2_height // 2)
# テキストを描画
draw.text(text1_position, text_line1, fill=text_color, font=font)
draw.text(text2_position, text_line2, fill=text_color, font=font)
# 画像をJPEG形式で保存
img.save(output_file, "JPEG")
print(f"サムネイルを {output_file} に保存しました!")
# テキストの入力
text_line1 = input("1行目のテキストを入力してください: ")
text_line2 = input("2行目のテキストを入力してください: ")
# サムネイルを生成
create_thumbnail(text_line1, text_line2, "thumbnail.jpg")
注意点
・日本語フォントをダウンロードして用意する。
・「NotoSansCJK-Regular.ttc」で検索するとダウンロードできるサイトがある。
・フォントファイルをスクリプトと同じフォルダに配置する。
コメント