バナーコンポジター(Banner compositor)
実際の画像を横に並べてバナーを構築し、継ぎ目をブレンドし、ロゴを上部に配置します。何も描き直されません。顔は写真のままで、タイトルはデザインされたままです。
なぜ合成であって生成ではないのか
この作業のために画像AIのプロンプトを求める人がよくいます。生成では、コミュニティバナーが正しく表現しなければならない以下の2点で正確に失敗します。
- タイトルのワードマーク。 ジェネレーターはロゴを書き直します。近いですが間違ったものになり、ファンはすぐに気づきます。
- 実在の人物。 ジェネレーターは顔を描き直します。結果は似ているだけで、多くのコミュニティでは加工コンテンツとして禁止されており、人物を誤って表現します。
そのため、生成プロンプトを求められた場合は、これを2、3文で説明し、合成を提案してください。ユーザーがそれでもジェネレーターを使いたい場合は、テキストや人物のない背景プレートに限定し、実際のアセットはこのスキルで上部に配置します。
ワークフロー
1. 概要を確定する
何かを尋ねる前に、リクエストとファイルから以下を決定します。
- サイズ。 プラットフォームはバナーサイズを変更するため、最も新しい証拠を、以下の順序で使用します。ユーザーがプラットフォームのアップロードダイアログから指定したサイズ、プラットフォームの現在のヘルプページ、
references/platform-sizes.md(日付とソース付き)、既存のバナーのピクセルサイズ(変更前の可能性あり)。使用したサイズとその出典をユーザーに伝えてください。一部のプラットフォームでは、デスクトップ用とモバイル用で別々のバナーが必要です。以下の「複数のサイズ」を参照してください。 - 被写体とその順序。 左から右に何を配置するか、特定の被写体により多くのスペースを割り当てるかどうか。
- 手持ちのアセット。 フォルダを一覧表示します。すべての画像を自分で開いて確認してください。ファイル名やキャプションだけでは、画像の内容、鮮明さ、埋め込まれたテキストがわかりません。
- ハウスルール。 加工画像に関するコミュニティルールと、トーンに関してユーザーが述べたこと。プロジェクト内にあれば読んでください。
この方法で確定できないこと(不足している被写体リストなど)だけを尋ねてください。
2. 不足を補う
各被写体について、ロゴまたはワードマークと1つ以上の画像が必要です。不足しているものがあれば、公式資料を探します。権利者の公式投稿やチャンネル、プレスキット、公式アートワークを転載しているニュースサイトなどです。references/asset-sourcing.mdに検索戦術、サブエージェントへの検索委任の概要、ソースファイルの形式が記載されています。ユーザーがサブエージェントを要求した場合、または環境がそれを推奨する場合は委任し、それ以外の場合はインラインで検索します。
検索方法に関わらず、3つのルールが適用されます。
- 公式のみ、そしてその根拠を伝えること。 ファン編集やAIレンダリングはあふれています。各ファイルの入手元を記録してください。「公式」が元の投稿ではなくキャプションに基づいている場合は、最終報告書でその旨を明記してください。
- アセットを決して捏造しないこと。 ロゴが存在しない場合、バナーにはロゴを入れないか、後述するポスターのトリミングを使用します。代わりのデザインを考案しないでください。
- ユーザーを外部リクエストに巻き込まないこと。 URL、ヘッダー、検索クエリに名前、プロジェクト名、メールアドレスを含めないでください。
ダウンロードは作業フォルダに保存し、信頼する前に各ファイルを確認してください。scripts/contact_sheet.pyは多数の候補を1枚のシートにまとめ、1つずつ開くよりも迅速です。
3. ロゴを入手する(最も忠実な方法から)
- ユーザーが提供した透明ロゴファイル。 それを使用します。背景に色付きのフリンジが見える場合は、
cutout_logo.py --key alpha --defringe 2を実行します。 - タイトルがそのまま残っているポスター。 デザイナーが配置した位置にタイトルが来るようにポスターをトリミングします。何も切り抜かれていないため、スタイルは正確です。唯一のソースが小さい場合に最適な方法です。
- キーアートからの切り抜き。
scripts/cutout_logo.pyを使用して、ロゴを背景からキーアウトします。ロゴと背景を分けるもの(暖色の文字と寒色の背景のチャンネル差r-b、暗い背景の明るい文字のluma、明るい背景の暗い文字のinv-luma、フラットな背景色のbg)に基づいてキーを選択します。常に--test-sheetを渡し、明るい背景と暗い背景での結果を確認します。
切り抜きは最も忠実でない方法です。ロゴの暗い部分や影の部分は、背景色に近いと消えてしまいます。ロゴを元の背景のような地の上に配置するか、レイアウト仕様で backing(塗りつぶされたシルエットとソフトシャドウ)を指定し、ロゴが切り抜きであることをユーザーに伝えてください。
ワードマークを描き直して「クリーニングアップ」したり、レタリング、スタイル、色を変更したりしないでください。
4. 仕様ファイルでレイアウトする
レイアウトをJSONとして記述し、scripts/compose_banner.pyでビルドします。仕様は保持すべきものです。後でより良い画像が見つかった場合、パスを1つ変更して再ビルドします。references/spec-format.mdに全フィールドが記載されており、assets/example-spec.jsonが出発点となります。
モデルはタイル(各スロットに合わせて拡大縮小およびトリミングされ、左隣のタイルにフェードインする写真)の行と、その上にオーバーレイ(ロゴ、フェードで消えないように最後に描画)です。スクリプトでは判断できないレイアウト上の判断事項:
- 顔をフェード範囲から避ける。 最初以外の各タイルの左
featherピクセルは半透明です。そこに顔があると、隣の被写体にゴーストのように重なります。クロップを移動するか、スロットを拡大してください。 - ロゴは、自身の被写体のタイルの中で静かな領域(ピントの合っていない背景、空、暗い壁など)の上に配置する。 次の被写体のタイルに食い込まないようにします。
- 被写体のバランスを取る。 類似したロゴの幅と類似した顔のサイズは、1つのバナーとして読み取れます。1つのロゴを大幅に小さくしなければならない場合は、理由をユーザーに伝えてください。
- 変更可能な情報は切り取る。 ユーザーが希望しない限り、ポスターに焼き付けられたリリース日、価格、「近日公開」の行はトリミングで除去します。バナーのテキストは後で編集できません。
- 拡大縮小とトリミングのみ。 レタッチ、顔編集、透かしやクレジットの削除は行いません。唯一のコピーに第三者の透かしが入っている場合は、別のコピーを見つけるか、使用しないでください。
- プラットフォームのUI要素に注意する。 多くのサイトはアバターやタイトルをコーナーに重ね、スマートフォンではサイドをトリミングします。それらのゾーンがわかっている場合は、顔やロゴをそこに配置しないでください。
複数のサイズ。 プラットフォームが複数のバナー(デスクトップ用とモバイル用、または2つのサイト用)を必要とする場合、サイズごとに1つの仕様を作成し、アセットを再利用します。完成したバナーを異なる形状にリサイズしないでください。あるアスペクト比で機能するクロップとロゴ位置が、別のアスペクト比では顔を切り落とします。サイズが数ピクセルしか違わない場合は、仕様をコピーして最後のタイルを調整します。
非常に細いストリップ。 およそ8:1(例:1072x128)の場合、高さ一杯に収まる顔の幅はわずか約100ピクセルになるため、より多くの被写体を配置できますが、それぞれの表示領域は小さくなります。顔にタイトにクロップし、背の高いバナーよりも被写体あたりの画像数を少なくすることを想定し、各ロゴがその高さでも判読可能か確認してください。2行積みのワードマークやタグラインは小さすぎて読めない可能性があります。その旨を伝え、ユーザーにどうするか決定してもらいます。
5. ビルド、確認、修正
python scripts/compose_banner.py layout.json --preview preview/
このスクリプトは、証明可能な問題(ファイルの欠落、空の帯を残すクロップ、タイル間の隙間、オーバーラップより広いフェード)があると停止します。また、大きなアップスケールなど、よりソフトな問題については警告します。
次に結果を確認します。必ずフルサイズで確認してください。 幅広のバナーをビューアに合わせて縮小すると、ゴースト状の継ぎ目や壊れたロゴのエッジが隠れます。--previewはこのためにフル解像度のセグメントと、継ぎ目とオーバーレイボックスを描画した guides.png を作成します。各セグメントで以下を確認します。
- 継ぎ目で切れていたり、隣にゴーストのように重なっている顔
- ロゴのエッジ:穴、ハロ、フリンジ、このサイズで読めないもの
- 空の帯、引き伸ばされた人物、目に見えるタイルの端
- 意図していないテキスト
仕様を修正して再ビルドします。一度の確認で見つけた問題はすべて修正してから、再度確認してください。
6. 保存と報告
- ユーザーの既存のバナーを決して上書きしないでください。 新しいファイル名で保存します。スクリプトは
--forceが指定されない限り上書きを拒否します。これは自分自身のドラフト専用です。 - 仕様、使用したアセット、
SOURCES.mdを、セッションを超えて存続するフォルダにまとめて保存します。テンポラリフォルダにダウンロードを置くと失われ、バナーを再構築できなくなります。 - アップロードや公開は行いません。それはユーザーが行います。
報告は次の順序で行います。ファイルの場所とサイズ、内容(左から右へ)、弱点(信頼性の低いソース、切り抜きロゴ、読めないタグライン、貼り付けたように見えるタイル)、そして見つけた各アセットが公式である確実性。確認しなかったこと(例えば、サイトがスマートフォンでバナーをどのようにトリミングするか)を明白に述べてください。
スクリプト
| スクリプト | 用途 |
|---|---|
scripts/compose_banner.py | JSON仕様からバナーをビルド。--preview DIR で検査用セグメントとガイドを生成。 |
scripts/cutout_logo.py | キーアートからロゴをキーアウト、または既存の透明ロゴのフリンジを除去。--test-sheet で3種類の地の上での表示を確認。 |
scripts/contact_sheet.py | 候補画像を1枚のラベル付きシートにタイル表示し、素早く視覚確認。 |
各スクリプトは --help でオプションを表示できます。
権利とフェアディーリング
静止画、ポスター、ロゴはその所有者に帰属します。公式アートワークを改変せずに使用するファンやコミュニティのバナーは一般的な慣行ですが、その使用が許容されるかどうかはユーザーが決定します。そのため、ウェブからアセットを入手する際に一度その旨を伝えてください。そのページを権利者の公式アカウントであるかのように装うバナーは作成しないでください。