ローカルファイルとアップロード
入力した画像や動画のアップロードと切り抜きの仕組み、および上限。
入力に使えるもの
--product、--model、--still、tufty uploadはいずれも次の形式を受け付けます。
- ローカルのパス
data:URL- http(s)のURL
サーバーはtuftyのストレージにあるファイルしか受け付けないため、CLIはまず各入力をtuftyストレージのURLに変換します。
| 入力 | CLIの処理 |
|---|---|
ローカルファイル、data: URL | tuftyのストレージにアップロード |
static.tufty.ai上のURL | そのまま使用し、再アップロードしない |
| その他のhttp(s)のURL | ダウンロードしてからtuftyのストレージにアップロード |
アップロードは、サーバーが署名したURLを使ってストレージに直接送られます。APIキーが送られる先はtufty.aiだけで、ストレージや第三者からのダウンロードに送られることはありません。
アップロード前の検証
次の検証はすべて最初のアップロードより前に行われます。いずれかに失敗した場合、アップロードも課金も行われません。
- 入力の数がツールの要件に合っているか(
missing_input/too_many_inputs) - ローカルファイルが存在するか(
file_not_found) - 1回の実行での画像の合計枚数が上限以内か(
too_many_images) - オプションの値が許可された範囲内か(
usage_error)
自動切り抜き
画像の入力は、デフォルトで認識・切り抜きが行われ、生成前に被写体と背景が分離されます。入力画像1枚につき1クレジットかかります。
- 画像ツール:商品画像(
+でつないだ各画像を含む)とモデル画像それぞれ1枚につき1クレジット。 - 動画ツール:静止画1枚につき1クレジット。
被写体が見つからない場合や切り抜き結果が使えない場合は、CLIが標準エラー出力でその旨を伝え、アップロードした元の画像で処理を続けます。すでに被写体だけのきれいな画像であれば、--no-cutoutでこの手順を省略できます。
tufty pet-dressup --product ./sweater.jpg --model ./corgi-cutout.png --no-cutout1つの商品の複数カット
同じ商品の画像を+でつなぐと、1つの商品として送信できます(最大4枚)。
tufty pet-dressup --product ./hoodie-front.jpg+./hoodie-back.jpg --model ./corgi.jpg- ファイル名自体に
+が含まれていても、そのファイルが存在する場合は分割されません。data:URLが分割されることもありません。 - URL内で
+そのものを使う場合は%2Bと書いてください。
上限
| 項目 | 上限 |
|---|---|
1回の--productで指定できる商品数(+でつないだものは1つとして数える) | 8 |
| 1商品あたりの画像枚数 | 4 |
1回の--modelで指定できるモデル画像 | 8 |
1回の実行での画像枚数(商品数 × モデル数 × --count) | 16 |
--stillの画像 | 画像から動画ではちょうど1枚 |
動画の整合性チェック
mp4、mov、m4vをアップロードする前に、CLIはファイル構造をチェックします。途中で切れているファイルやmoovインデックスがないファイルは、壊れたままアップロードせずにinvalid_video(終了コード2)を返します。
tufty upload
tufty upload ./corgi.jpg
tufty upload https://example.com/sweater.jpg --format url{ tool: "upload", data: { url } }を出力します。すでにstatic.tufty.ai上にあるURLはそのまま返され、この場合はログインも不要です。得られたURLはそのままツールに渡せるため、何度も使う画像を毎回アップロードし直す必要がありません。
