Seedream 5.5の画像をGIFにするには?ローカル書き出しの手順と検証例

ループする動きを設計し、PNGのフレーム順と表示時間を設定してGIFを書き出す手順。検証済みのローカル用キット付き。Seedreamによる画像生成は未検証です。

順番に並んだオレンジ色のマーカーが回転のぞき絵でループする動きになる様子

Seedream 5.5の画像からGIFを作るには、まず構図のそろったPNGをフレームごとに用意し、アニメーションの書き出しツールで順序と表示時間を設定します。透過画像、フレーム一覧画像、アニメーションGIFは別の成果物です。 画像モデルに「GIFを作って」と頼めば、ダウンロード可能なアニメーションが返るとは限りません。

ByteDanceのSeedream 5.5製品ページには、走るキャラクターを独立した透過レイヤーに分けた画像シーケンスの例があります。これはフレームを使う制作手順を検討する材料にはなりますが、ネイティブのGIFエンドポイント、フレーム数パラメータ、個別サービスの書き出し機能の存在を裏付けるものではありません。本記事で検証したのは、独自の数学的な軌道に沿うマーカーを使ったローカルでのPNGからGIFへの変換です。サンプルフレームはSeedream 5.5で生成しておらず、後述のプロンプトも未検証のたたき台です。

サンプルをダウンロードして実行する

サンプルキットには、元のPNGフレーム、出典の説明、書き出しスクリプト、テスト素材の生成スクリプト、実際に出力したGIF、検査レポートが含まれます。スクリプトはモデルの呼び出しやファイルのアップロードを行いません。

Python 3とPillowを用意し、FFmpegをPATHから実行できるようにしてください。FFmpegは普段使っているパッケージマネージャーでインストールできます。ZIPを新しい作業フォルダに展開し、export_gif.pyとfixture/があるフォルダでターミナルを開きます。macOSまたはLinuxでは、次のコマンドを実行します。

python3 -m venv .venv
source .venv/bin/activate
python -m pip install Pillow
python export_gif.py fixture output --fps 10 --matte '#fff8ee'

Windowsでは、sourceの行を.venv\Scripts\activateに置き換えて仮想環境を有効にするか、その環境のPython実行ファイルを直接使用します。

検証環境ではFFmpeg 9.0.2を使用しました。キットはインストール済みバージョンと出力ファイルの属性をreport.jsonに記録します。試すだけなら、バージョンを固定せずに現在のPillowをインストールする方法で構いません。繰り返し本番作業に使う場合は、自分の検証を通過したバージョンに固定してください。

出力先には、まだ存在しないディレクトリを指定します。再実行によって確認済みのアニメーションを誤って上書きすることを防ぐためです。元のフレームは変更しません。失敗後にFAILED.txtを含むフォルダが残った場合は、原因を調べ、次の試行では別の出力フォルダを指定してください。

ローカルで書き出した結果:閉じた軌道に沿って動くオレンジ色のテストマーカー

コードで描画したテストフレームを使った実際の書き出し結果です。Seedreamの生成画像ではなく、この単純な見た目からSeedreamの画質は評価できません。

今回の実行では、320 × 180ピクセル、エンコード後12フレーム、合計1,200 ms、ループ値0のGIFが得られました。GIFのメタデータで0は連続ループを意味します。ファイルサイズは6,366バイトでした。これらは小さなテスト素材の測定値であり、細部まで描かれたキャラクターアニメーションの容量や画質の目安ではありません。

画像を生成する前に動きを決める

アニメーションの指示には、動作、動かさない基準、最後から最初へのつなぎ方を含めます。「かわいいマスコット、美しい照明」だけでは画風しか伝わりません。フレーム間で変える部分と、固定する部分を決めましょう。固定項目には、キャンバスサイズ、カメラ位置、被写体の大きさ、足元の基準線、配色、キャラクターの特徴などがあります。

最初は、軽く手を振るような単独の動作が適しています。振り向き、ジャンプ、カメラ移動、小道具の変更、背景の移動を同時に組み合わせないでください。変化が増えるほど、意図した動きと生成時のずれを見分けにくくなります。6種類のポーズで動作の意図を示せても、6フレームなら滑らかになるとは限りません。表示時間とポーズ間の変化量が見え方を左右します。

プロンプトを試す前に、使うサービスでSeedream 5.5を選べることと、必要なファイルを書き出せることを確認してください。2026年11月10日のOfox catalog確認では、5.0 ProとFlashは見つかりましたが、5.5は見つかりませんでした。この違いはバージョンと利用経路のガイドで説明しています。近い名前のモデルに置き換えた結果を5.5と表示してはいけません。

利用を確認できたサービスでは、次の指示を出発点にできます。

Create a six-pose sequence for a short looping wave by the character
in my reference. Keep the camera fixed and use the same full canvas,
character scale, foot baseline, clothing and colors in every pose.

Pose order:
0 — neutral, arm resting;
1 — arm lifting;
2 — hand raised and tilted left;
3 — hand raised and tilted right;
4 — arm lowering;
5 — almost neutral, positioned to transition back to pose 0.

The face, torso, feet and background framing should remain stable.
Only the waving arm and hand should move. Avoid new objects or text.
Return separate PNG images with transparent backgrounds if this
service supports that export. Do not draw a checkerboard background.
If only a contact sheet is available, use an exact 3-column × 2-row
grid with equal cells, no gutters, no labels and no outer border.

プロンプト、モデル名の表示、参照画像、ダウンロードした原本をまとめて保存します。画面から6枚の独立したフレームや整った一覧画像を取得できない場合、未確認のAPIパラメータで解決できると考えないでください。サービスが実際に提供する書き出し方法を使うか、アニメーション出力を確認済みの別の経路を選びます。

位置をそろえたまま各ポーズを切り出す

各フレームのキャンバスは、全体を残して同じ大きさにそろえます。不透明な部分だけに合わせて画像を個別にトリミングすると、静止するはずのキャラクターが跳ねることがあります。ポーズの意図は変わらなくても、画像内の座標原点がずれるためです。すべてに同じ切り抜き範囲と倍率を使ってください。

独立したファイルを受け取った場合は、動作順に名前を付けます。

frames/
  frame-000.png
  frame-001.png
  frame-002.png
  frame-003.png
  frame-004.png
  frame-005.png

名前を変更する前に画像を確認してください。ダウンロード順がポーズ順とは限りません。ファイルサイズで並べたり、サービスが付けたファイル名をそのまま時間順だと判断したりしないでください。

一覧画像の場合は、切り出す前に指定したグリッドになっているかを確認します。3列×2行でも、コマの大きさが不ぞろいだったり、周囲にタイトルが付いていたりすれば、そのまま分割できるスプライトシートではありません。画像編集ソフトやスプライトシート変換ツールで実際のコマ境界を指定し、切り出した全コマを点検します。等分に切るだけでは、境界をまたぐ絵は修正できません。Image 2.6のGIFチュートリアルには、別途検証したシート変換例と出典がありますが、その元画像をSeedreamが生成したという証拠ではありません。

位置合わせが終わるまでは元の解像度を保ってください。切り抜きの誤りに気付く前に全フレームを縮小すると、プレビューでは欠陥が隠れ、後からの修正も難しくなります。

使用先に合わせて背景を選ぶ

PNGは半透明を保持できます。GIFの透明処理はパレットに基づくため、PNGと同じ連続的なalpha値は保持できません。淡い光、ガラスの縁、アンチエイリアス処理された髪の境界などは、透過GIFに変換すると見え方が変わることがあります。拡張子を変えるだけでは、こうした性質は維持できません。

付属の書き出しスクリプトでは、結果を予測しやすい方法を採っています。色数を減らしてGIFにエンコードする前に、すべての入力画像を指定した単色の背景に合成します。既定のクリーム色は背景色の選択であり、透過出力ではありません。白い背景に置くなら--matte '#ffffff'を指定するか、実際の掲載先の背景色を使ってください。複数の背景上で使うGIFには、この方法が適さない場合があります。

半透明を正確に残す必要がある場合は、元のPNGシーケンスを保存し、最終的な掲載先のアプリでalphaに対応したアニメーション形式を検証します。APNGやアニメーションWebPも候補ですが、対応状況は編集ソフト、コンテンツ管理システム、再生環境によって異なります。掲載先で試さずに、チャットアプリや広告枠で使えるとは断言できません。元のファイルに実用的なalphaがあり、背景が描き込まれているだけではないことを調べる方法は、透過PNGガイドで説明しています。

PillowのGIFドキュメントは、フレームの表示時間、ループ、フレームの消去方法を解説しています。ファイル形式の資料であり、Seedreamの生成仕様ではありません。

表示時間を設定し、ループの継ぎ目を見る

10 fpsでは1フレームが100 msなので、12フレームで1.2秒です。スクリプトが使えるフレームレートを5、10、20、25、50 fpsに限定しているのは、各フレームの時間をGIFの100分の1秒単位で正確に表すためです。これはスクリプトの制約で、Seedreamの制約ではありません。

最後のフレームから最初へのつながりは、途中のつながりと同じくらい重要です。最後と最初のポーズの差が大きいと、繰り返すたびに跳ねて見えます。一方、最初と最後が同じ画像で、それぞれを1フレーム分表示すると、不要な停止が生じる場合があります。意図した停止なら問題ありません。一律のルールにせず、実際に再生して判断してください。

サンプルの12個のマーカー位置は閉じた軌道上にあり、最後に最初の位置を重ねていません。順序と時間を確かめるための素材で、自然なキャラクターの動きを再現したものではありません。自分のシーケンスでは、一覧画像でキャラクターの一貫性を確認したうえで、実際の表示サイズで再生します。静止した一覧画像だけでは不自然なリズムは分かりません。

スクリプトが検査する項目と、判断できない項目

スクリプトは、連番のPNG、同じ画像サイズ、少なくとも2フレーム、フレーム間の何らかの変化を必要とします。既存の出力フォルダや、変換前の時点で上限を超える画像は受け付けません。エンコード後にGIFを開き直し、複数フレームであること、合計時間が想定どおりであること、連続ループが設定されていることを確認します。後から比較できるように元ファイルのハッシュも記録します。

エンコードにはFFmpegのパレット生成・適用フィルターを使います。シーケンス全体でパレットを統一する助けにはなりますが、失われた描画の細部や不ぞろいなポーズは修復できません。また、GIFエンコーダーは同一フレームを合算した表示時間でまとめることがあるため、出力GIFのフレーム数は元ファイル数と常に一致するわけではありません。

ローカルでPNGをGIFに変換した際の検査記録

ローカル検証記録のスクリーンショットです。ファイル検証と書き出しの結果を示しており、モデル画面やSeedreamの生成結果ではありません。

症状最初に調べること次の対応
1枚の画像しか表示されない実際にダウンロードしたファイルをデコードしてフレーム数を数える独立した元フレーム、または本物のアニメーション出力を入手する
キャラクターの位置が跳ねるキャンバスサイズ、共通の原点、切り抜き範囲エンコード前に同じキャンバスで位置をそろえる
白い四角が出る元のPNGにalphaがあるか、どの背景色を選んだかalphaを調べ、適切な背景か形式を選ぶ
輪郭が荒れるパレットとalphaの変換、プレビューサイズPNG原本を保存し、掲載先の背景で確認する
ループの継ぎ目で動きが跳ぶ最後と最初のポーズの差ファイル名ではなくポーズや表示時間を調整する
モデルへのリクエストが失敗する正確なモデル名、サービス、対応するリクエスト形式画像APIのトラブルシューティングを参照し、他モデルのGIFパラメータを流用しない

実運用では、.gifという名前のファイルを得ただけで完了にはなりません。掲載先で再生できるか、動作は正しいか、被写体を維持できているか、輪郭は許容範囲か、ファイル容量の制限を満たすかを確かめます。編集可能な元フレームも最終出力と一緒に保存してください。フレームを組み立てるより、GIFのネイティブ生成を優先する場合は、Seedream 5.5とImage 2.6の比較ガイドを参考に、実際の出力方式を確認できた経路を選んでください。

Ofox Chatを開くと、動作の指示を整理したり、利用可能な画像ツールを使ったりできます。ただし、これは一般的なChatの入口で、Seedream 5.5の提供を確認したリンクではありません。クレジットを使う前にモデルと書き出し方法を確認してください。

ダウンロード用スクリプトには、1フレーム最大1,600万ピクセル、入力全体で最大6,400万ピクセルという上限があります。大きな素材は実行前に縮小または分割してください。小規模なローカル作業向けであり、本番の大量処理用エンコーダーではありません。