Webフォントと背景除去
フォント
テキストレイヤーのfontにはファミリー名かURLを指定できます。パソコンにないフォントを使う方法は3つあります。
名前でGoogle Fontを選ぶ
font_source="google"を指定します。初回にファミリーをダウンロードしてキャッシュし、weightとitalicに合うファイルを選びます。
from quickthumb import Canvas
canvas = Canvas(1280, 720).background(color="#0A1730").text(
content="Hello from Inter",
font="Inter",
font_source="google",
weight=800,
size=96,
color="#FFFFFF",
position=("50%", "50%"),
align="center",
)
canvas.render("inter.png")
Google Fontsのファミリーを名前で選びたいときに使ってください。
フォントファイルをURLで指定する
.ttf、.otf、.woff、.woff2ファイルのURLを渡します。一度ダウンロードしてキャッシュします。
SHOW_FONT_URL = "https://fonts.gstatic.com/s/dmserifdisplay/v17/-nFnOHM81r4j6k0gjAW3mujVU2B2K_c.ttf"
canvas.text(content="Signal to Noise", font=SHOW_FONT_URL, size=50, color="#F5F5F7")
URLは特定のファイルを指すため、weight、bold、italicは無視されます。通常と太字を使い分けるなら、たとえばTextPartごとに異なるURLを指定してください。ポッドキャストの告知では、この方法で番組名のフォントを読み込みます。
ローカルのフォントフォルダーを使う
QUICKTHUMB_FONT_DIRにフォントのフォルダーを指定し、ファミリー名で参照します。QUICKTHUMB_DEFAULT_FONTはレイヤーにfontがないときのフォントを設定します。
import os
os.environ["QUICKTHUMB_FONT_DIR"] = "assets/fonts"
os.environ["QUICKTHUMB_DEFAULT_FONT"] = "Roboto"
canvas.text(content="Hello", font="NotoSerif", weight=700, size=64, color="#FFFFFF")
レシピの作例はすべて、リポジトリのassets/fontsに同梱されたフォントをこの方法で使います。
背景除去
画像レイヤーのremove_background=Trueは写真の被写体を切り抜き、残りを取り除きます。
from quickthumb import Canvas, Shadow
canvas = (
Canvas(1280, 720)
.background(color="#1C1C1E")
.image(
path="portrait.jpg",
position=(1280, 720),
width=620,
height=710,
fit="cover",
align=("right", "bottom"),
remove_background=True,
effects=[Shadow(offset_x=-12, offset_y=12, color="#00000099", blur_radius=26)],
)
)
pathにはhttp(s) URLも指定できます。
Python 3.11以降が必要なrembg追加機能をインストールしてください。
最初の呼び出しで、分割モデル(約170 MB)をダウンロードしてキャッシュします。
次の点に注意してください。