列挙型とグラデーション
Align
レイヤーのどの点をpositionへ合わせるかと、テキストの横方向の整列を決めます。
値
| 列挙型 | 文字列の別名 | 横 | 縦 |
|---|---|---|---|
Align.CENTER |
"center" |
中央 | 中央 |
Align.LEFT |
"left" |
左 | 中央 |
Align.RIGHT |
"right" |
右 | 中央 |
Align.TOP_LEFT |
"top-left" |
左 | 上 |
Align.TOP_CENTER |
"top-center" |
中央 | 上 |
Align.TOP_RIGHT |
"top-right" |
右 | 上 |
Align.BOTTOM_LEFT |
"bottom-left" |
左 | 下 |
Align.BOTTOM_CENTER |
"bottom-center" |
中央 | 下 |
Align.BOTTOM_RIGHT |
"bottom-right" |
右 | 下 |
使い方
# Enum value
canvas.image(..., align=Align.TOP_LEFT)
# String alias
canvas.image(..., align="center")
# (horizontal, vertical) tuple
canvas.image(..., align=("center", "middle"))
タプルの横方向は"left"、"center"、"right"、縦方向は"top"、"middle"、"bottom"です。
BlendMode
先に描かれたレイヤーとの合成方法を決めます。
値
| 列挙型 | 文字列の別名 | 効果 |
|---|---|---|
BlendMode.NORMAL |
"normal" |
特別なブレンドをせず上に描きます。 |
BlendMode.MULTIPLY |
"multiply" |
色を乗算して暗くします。 |
BlendMode.OVERLAY |
"overlay" |
乗算とスクリーンを組み合わせます。 |
BlendMode.SCREEN |
"screen" |
反転、乗算、再反転で明るくします。 |
BlendMode.DARKEN |
"darken" |
ピクセルごとに暗い方を選びます。 |
BlendMode.LIGHTEN |
"lighten" |
ピクセルごとに明るい方を選びます。 |
使い方
# Enum value
canvas.background(image="texture.jpg", blend_mode=BlendMode.MULTIPLY)
# String alias
canvas.background(image="texture.jpg", blend_mode="multiply")
.background()と.image()で使えます。
FitMode
目標の枠が指定されているときに、画像をどう拡大縮小するかを決めます。
値
| 列挙型 | 文字列の別名 | 動作 |
|---|---|---|
FitMode.COVER |
"cover" |
枠を埋め、はみ出しを切り取ります。 |
FitMode.CONTAIN |
"contain" |
全体を枠内に収め、残りに余白を付けます。 |
FitMode.FILL |
"fill" |
縦横比を無視し、枠いっぱいに引き伸ばします。 |
使い方
# Enum value
canvas.image(path="portrait.png", position=("75%", "55%"), width=420, height=520, fit=FitMode.COVER)
# String alias
canvas.image(path="portrait.png", position=("75%", "55%"), width=420, height=520, fit="cover")
.background(image=...)と.image()で使えます。widthとheightの両方で目標の枠が定まる場合にだけ適用します。背景レイヤーではキャンバス全体がその枠です。
LinearGradient
角度と色の停止点で定義する線形グラデーションです。
from quickthumb import LinearGradient
LinearGradient(
angle=135,
stops=[("#FF5733", 0.0), ("#3333FF", 1.0)],
)
| パラメーター | 型 | 説明 |
|---|---|---|
angle |
float |
方向(度)。0は上から下、90は左から右です。 |
stops |
list[tuple[str, float]] |
(color, position)のリスト。位置は0.0–1.0の実数です。 |
例
# Top-to-bottom dark fade
LinearGradient(angle=0, stops=[("#000000", 0.0), ("#00000000", 1.0)])
# Diagonal blue-to-purple
LinearGradient(angle=135, stops=[("#3B82F6", 0.0), ("#8B5CF6", 1.0)])
# Three-stop gradient
LinearGradient(
angle=90,
stops=[("#FF0000", 0.0), ("#00FF00", 0.5), ("#0000FF", 1.0)],
)
.background(gradient=...)へ渡します。
canvas.background(
gradient=LinearGradient(angle=120, stops=[("#0F172A", 0.0), ("#0F172A00", 1.0)]),
opacity=0.8,
)
RadialGradient
中心点から広がる放射状のグラデーションです。
from quickthumb import RadialGradient
RadialGradient(
stops=[("#FF5733", 0.0), ("#3333FF", 1.0)],
center=(0.5, 0.5),
)
| パラメーター | 型 | 既定値 | 説明 |
|---|---|---|---|
stops |
list[tuple[str, float]] |
必須 | (color, position)のリスト。位置は0.0–1.0の実数です。 |
center |
tuple[float, float] |
(0.5, 0.5) |
キャンバスの寸法に対する比率(x, y)で指定する中心です。 |
例
# Vignette (dark edges, bright center)
RadialGradient(
stops=[("#00000000", 0.0), ("#000000CC", 1.0)],
center=(0.5, 0.5),
)
# Off-center spotlight
RadialGradient(
stops=[("#FFFFFF33", 0.0), ("#FFFFFF00", 1.0)],
center=(0.25, 0.3),
)
.background(gradient=...)へ渡します。
canvas.background(
gradient=RadialGradient(
stops=[("#22d3ee33", 0.0), ("#22d3ee00", 1.0)],
center=(0.5, 0.5),
),
)
TextFillImage
文字のグリフを画像で塗ります。テキストのバウンディングボックスに合わせて画像を拡大縮小し、文字の形にマスクします。
| パラメーター | 型 | 既定値 | 説明 |
|---|---|---|---|
path |
str |
必須 | 塗りに使う画像のローカルパスかリモートURLです。 |
fit |
str \| FitMode |
"cover" |
テキストの枠への合わせ方。"cover"、"contain"、"fill"です。 |
例
from quickthumb import Canvas, TextFillImage
# Local file
canvas.text(
content="FIRE",
size=140,
fill=TextFillImage(path="assets/fire_texture.jpg", fit="cover"),
position=("50%", "50%"),
align="center",
)
# Remote URL
canvas.text(
content="MARBLE",
size=140,
fill=TextFillImage(
path="https://example.com/textures/marble.jpg",
fit="cover",
),
position=("50%", "50%"),
align="center",
)
.text()かTextPartのfillへTextFillImageを渡します。実際の使い方はグラデーションと画像の塗りを参照してください。