열거형과 그라디언트
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를 전달합니다.
실제 사용법은 그라디언트와 이미지 채우기를 참고하세요.