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

よくある質問

インストール

対応するPythonのバージョンは?

Python 3.11以降です。パッケージの分類は3.11と3.12で、CIは3.11で実行します。背景除去のrembg追加機能も同じです。

quickthumbコマンドが見つかりません

コマンドラインツールは追加機能です。pip install "quickthumb[cli]"でインストールしてください。利用できる追加機能はインストールにまとめています。

SVGレイヤーでRenderingErrorが出るのはなぜですか?

SVGファイルの描画にはsvg追加機能が必要です。pip install "quickthumb[svg]"でインストールします。キャンバスをSVGへ出力する場合は不要です。

キャンバスとレイヤー

レイヤーのないキャンバスをレンダリングするとどうなりますか?

キャンバスと同じサイズの、完全に透明な画像になります。エラーではありません。

グループの子で「group children must not set position」が出るのはなぜですか?

グループ自身が子の位置を決めるためです。子のpositionを外し、代わりにグループを配置してください。

canvas.group(
    children=[{"type": "text", "content": "TITLE", "size": 96, "color": "#FFFFFF"}],
    position=("8%", "50%"),
    align=("left", "middle"),
)

子のalignも無視されます。グループの交差軸方向に子を揃えるには、グループのitem_alignを使います。

レンダリング前にデザインの問題を確認できますか?

canvas.diagnose()を呼ぶか、JSON仕様にquickthumb lint spec.jsonを実行してください。小さすぎる文字、キャンバスからのはみ出し、低いコントラスト、隠れたレイヤーなどを報告します。診断とCLIを参照してください。

テキストとフォント

テキストがキャンバスからはみ出します

max_widthを設定すると折り返せます。

canvas.text(content="A longer title that needs two lines", size=72, color="#FFFFFF", max_width="60%")

文字を小さくして収める場合は、max_width、max_height、または両方とともにauto_scale=Trueを追加します。

bold=Trueとweight=900を設定したらエラーになりました

同じ属性を指定するため、どちらか一方を使います。weightならより細かく指定できます。例:TextPart(text="STRONG", weight=900)。

Google Fontを使うには?

フォント名とfont_source="google"を指定します。一度ダウンロードしてキャッシュし、weightに合うファイルを選びます。

canvas.text(content="Hello", font="Inter", font_source="google", weight=800, size=72, color="#FFFFFF")

フォントファイルのURLを渡したり、QUICKTHUMB_FONT_DIRにフォントのフォルダーを指定したりする方法もあります。Webフォントと背景除去を参照してください。

画像

URLの画像は使えますか?

はい。background(image=...)とimage(path=...)はhttp(s) URLを受け付け、レンダリング中にダウンロードしてキャッシュします。設定はリモートアセットとキャッシュを参照してください。

人物の背景を除去するには?

画像レイヤーにremove_background=Trueを設定します。rembg追加機能が必要です。

canvas.image(path="portrait.jpg", position=("75%", "55%"), width=420, height=520, remove_background=True)

cover、contain、fillはどう違いますか?

coverは枠を埋め、収まらない部分を切り取ります。containは画像全体を枠内に収め、余白を残します。fillは縦横比を無視し、枠いっぱいに引き伸ばします。

出力

どの形式に出力できますか?

render()へ渡すファイルの拡張子で決まります。

種類 形式 必要なもの
画像 PNG、JPEG、WebP
ベクター・ドキュメント SVG、PDF、PPTX PDFとPPTXにはそれぞれpdf、pptx追加機能
Web HTML
アニメーション GIF、MP4、WebM MP4とWebMにはffmpeg

最初の出力は出力形式を選ぶから始めてください。各形式で維持されるものと失われるものはエクスポートリファレンスで説明しています。

PNGにqualityは指定できますか?

いいえ。qualityはJPEGとWebP専用です。PNGに渡すとRenderingErrorになります。

ファイルに書かずに画像を受け取るには?

png_base64 = canvas.to_base64(format="PNG")
jpeg_data_url = canvas.to_data_url(format="JPEG", quality=90)

JSON

Canvas.from_json()にdictを渡せますか?

いいえ。JSON文字列を受け付けます。先にjson.dumps(data)で変換してください。

to_json()でValidationErrorが出るのはなぜですか?

キャンバスに.custom(fn)レイヤーがあるためです。Python関数はJSONに保存できないので、先にそのレイヤーを取り除いてください。

to_json()の後にthemeブロックがなくなりました

仕様を読み込むときにテーマトークンを実際の値へ置き換えるため、to_json()は値だけを書き、themeブロックは残しません。トークンを編集し続けたい場合は、元の仕様ファイルを保管してください。

エラー

エラーの種類は何を意味しますか?

  • ValidationError:引数や仕様のフィールドが無効です。レイヤーの追加時、または仕様の読み込み時に発生します。
  • RenderingError:ダウンロードなど、描画中の処理に失敗しました。
  • MissingAssetError:仕様が参照するローカルファイルが存在しません。

どのエラーもdetailsに安定したコード、該当フィールドのJSON Pointer、レイヤーIDを持ちます。構造化エラーを参照してください。