コンテンツにスキップ
quickthumb
すべてのドキュメント

APIリファレンス

Canvasでシーンを作り、Deckで順番に並べます。どちらも同じ文書操作を実装します。各レイヤーに指定できるフィールドは、個別のページで説明しています。

サポートする公開インターフェース

文書化された作成用の型と結果モデルはquickthumbから、音声解析はquickthumb.audioからインポートしてください。別のモジュールから名前をインポートできても、サポートする入口とは限りません。

インターフェース サポートする使い方
作成 Canvas、Deck、文書化されたレイヤー・エフェクトモデル、モーショントラック、トランジション、オプションモデル
文書操作 両方のvalidate()、inspect()、diagnose()、prefetch_assets()、sample()、export()。汎用処理にはinspect_document()
結果 型付きレポート、ExportResult、CanonicalFrame / FrameSequence、ImageSequence*の結果。model_dump_json()で保存します。
JSON to_json()、Canvas.from_json()、Deck.from_json()、canvas_json_schema()、document_json_schema()
音声に基づく作成 quickthumb.audio.analyze_audio()とAudioAnalysis。ソース時刻のオンセットやRMSに応じたスケールを数値モーションへ記録します。
用途別の出力 戻り値や制御が目的に合う場合に使う、文書化されたrender()、render_frame()、to_*()、export_image_sequence()

ファイル出力にはexport()を推奨します。機能ポリシーを事前検査し、保存先と診断を返します。用途別メソッドは独自の戻り値を持ち、すべてが同じポリシーを適用するわけではありません。出力APIを参照してください。内部の出力処理を直接呼ばず、このAPIで形式ごとのオプションを指定します。

_で始まるモジュール、レンダラーやコンテキスト、タイムラインのコンパイルヘルパーは実装詳細です。サポートするライフサイクルなしに変わったり削除されたりします。コンパイラーとレンダラーを自分で調整せず、sample()でフレームを取得してください。リファレンスと生成スキーマはインストールした版の対応フィールドを説明します。公開APIでも、バージョン間で固定される意味ではありません。

共通の文書ワークフロー

Python、正規JSON、Deckで同じレイヤーデータを使います。レンダラーオブジェクトや追加の依存関係は不要です。

from quickthumb import Canvas, Deck, Document, ExportResult

canvas = Canvas(320, 180).background(color="#102030").shape(
    "rectangle", position=(24, 24), width=80, height=40, color="#42CEB7",
    id="badge", motion_key="brand", anchor=(0, 0),
)
restored = Canvas.from_json(canvas.to_json())
document: Document = Deck(slides=[restored])
result: ExportResult = document.export("slides.png")
print(result.written_paths)  # Numbered paths are reported by the result.
print(document.sample().frames[0].sha256)

共通のレイヤー用語

CanvasのレイヤーはDeckスライドや正規JSONでも同じフィールドを使います。Deckが加えるのは順番、切り替え、ナレーション、ノートであり、レイヤーフィールドの名前は変えません。PythonタプルはJSON配列、列挙値は文字列になり、各レイヤーにはtype識別子があります。

フィールド・概念 意味
id グループの子孫を含むCanvasシーン内で一意な任意の識別子です。Deckの各スライドは独立した範囲を持ちます。
motion_key Morphでシーン間を対応付ける任意のキーです。シーン内のidとは別です。
position, width, height 作成時の配置とサイズ。対応するレイヤーではピクセルか百分率文字列を使います。百分率はキャンバス基準です。必須フィールドや寸法規則は各レイヤーを参照してください。
align positionへ合わせるレイアウト枠の点。テキストの整列も決めます。Alignを参照してください。
rotation, anchor 回転は度です。anchor=(x, y)は基準モーション用の0–1の正規化ピボットで、レイアウトの整列とは異なります。静的回転には独自の枠規則があります。変換の基準点を参照してください。
opacity 対応するレイヤーで0から1までの不透明度です。
animation プリセットか、型付きトラックと時間を持つAnimationSpecです。位置トラックは作成位置からの差分です。スケールは外側の物体を変換し、ImageZoomTrackは枠内の画像内容を変えます。
グループ 自動レイアウトが子を配置します。各子の座標を指定せず、行や列には.group()を使います。
parent / null 最上位の動かせるレイヤーのための、シーン内の高度な変換階層です。子の位置は親基準ですが、百分率はキャンバス基準のままです。グループレイアウトとは別です。親変換を参照してください。

すべてのレイヤーがすべてのフィールドを受け付けるわけではありません。背景、枠線、null、描画レイヤーは役割が異なります。各ページとJSONスキーマがフィールドの契約です。プラグイン登録ではパラメーターを宣言し、明示的なPluginRegistryで描画コールバックを渡せます。JSONを読むだけでコールバックを同梱・インストールするわけではありません。

ページ一覧

ページ 内容
Canvas キャンバスの作成、全レイヤーメソッド、検査、出力メソッド
Deck 複数のキャンバスを1つのPDF、PPTX、HTML、動画、画像シーケンスにする
ドキュメントの検査 inspect_document()とCanvas/Deck共通のサンプリング
背景 .background()の色、グラデーション、画像
テキスト .text()とTextPart、通常・リッチテキスト
画像 .image()の配置と切り抜き
図形 .shape()の長方形、楕円、カプセル、三角形、星、多角形
パス .path()の塗り・線と対応範囲内のモーション
SVG .svg()でSVGのアイコンやロゴを使う
動画 .video()のクリップ、字幕、音声
グループ .group()の行・列の自動配置
枠線 .outline()のキャンバス枠線
データの可視化 .chart()と.qr_code()
エフェクト Stroke、Shadow、Glow、Filter、Background、Grain、Duotone、InnerShadow、BackdropBlur
列挙型とグラデーション Align、BlendMode、FitMode、LinearGradient、RadialGradient、TextFillImage

エラーの種類

例外 発生する場面
ValidationError レイヤービルダーへ無効な引数を渡したとき。即座に発生します。
RenderingError .render()、.to_base64()、.to_data_url()の処理中に失敗したとき