透過 codex CLI 生成影像
codex exec 沒有「將影像寫入此路徑」的選項:它會將生成的內容儲存到
$CODEX_HOME/generated_images/<session id>/ 之下。scripts/codex_image.py 會執行一次非互動式回合,僅收集
該次會話的影像,並將它們寫入您指定的位置。如果沒有回傳任何影像,它就不會寫入任何內容。
務必使用這個腳本。 直接使用 codex exec "畫一隻貓" 通常會回傳文字說明或 ImageMagick 繪圖,
讓您得費心尋找輸出結果。
絕不回退到按量計費的 API。 即使 codex 失敗或配額不足,也不要使用 OpenAI SDK 或 OPENAI_API_KEY。
請報告失敗並停止。對於 Google 的按量計費 API,僅在使用者要求時,才使用 google-image-gen。
使用方式
請在技能目錄中執行,或提供腳本的絕對路徑。一次執行大約需要 30-60 秒。
python3 scripts/codex_image.py -p "暮色中,一輛孤獨的紅色自行車靠在濕漉漉的石牆上,電影感攝影" -o bike.png
| 目標 | 指令 |
|---|---|
| 長寬比(給模型的提示) | -p "..." -o out.png --aspect 9:16 |
| 參考圖片 | -p "..." -o out.png -r ref.png [-r ref2.png] |
| 編輯圖片 | --edit v1.png -p "把天空變成紫色" -o v2.png |
| 多個版本 | -p "..." -o opt.png -n 3(儲存為 opt.png、opt-2.png、opt-3.png) |
| 精確像素尺寸 | -p "..." -o cover.png --aspect 9:16 --fit 1080x1920 |
| 長提示 | --prompt-file prompt.md -o out.png |
| 預覽提示,不實際執行 | 加上 --print-prompt |
- 輸出檔案的副檔名會跟隨實際格式:以
bike.jpg要求但得到的 PNG 位元組,會儲存為bike.png。腳本 會印出它寫入的每個路徑。 --aspect只影響結果的形狀。--fit WxH則保證最終尺寸:它會用黑色邊框填補(--fit-mode pad,預設值) 或置中裁切(--fit-mode crop),並一律儲存為 PNG。請讓--aspect與目標匹配,以盡量減少填補或裁切。--fit需要 Pillow,會在 codex 執行前檢查。-n要求在一次執行中生成 N 個版本;模型可能回傳較少的數量,腳本會儲存它所收到的。--edit會將圖片附加為目標,並告訴模型只更改提示要求的內容。
撰寫提示
腳本會加入強制使用真實影像工具呼叫的措辭,因此 --prompt 只需要專注於圖片本身。
簡短的標籤化規格效果很好:
主體:一輛孤獨的紅色自行車,邊緣的油漆已磨損露出金屬
場景:靠在濕漉漉的石造港灣牆上,遠處有城鎮燈光
風格:電影感攝影,淺景深
光線:黃昏,溫暖的低角度陽光,潮濕石頭上的倒影
文字(逐字):"無備胎"
避免:人物、浮水印、額外的自行車
- 需要出現的文字請加上引號,並保持簡短;過長的字串回傳時容易拼寫錯誤。
- 明確指出不可出現的內容。對於透明去背的需求,請要求透明背景並儲存為
.png。 - 對於
--edit,請描述要做的改變(「移除路燈」),並指定必須保留的內容(「保留自行車、構圖 和光線」)。每次只改變一件事。 - 編輯其實是重新生成,而非像素修補:構圖和細節會偏移,且每次重新生成都會加劇偏移。請保持編輯鏈 簡短,並將必須完整保留的內容透過合成方式放回。
生成後
在交付結果前,請使用任何可檢視圖片的方式檢查結果:模型有時會在文字、數量或要求的細節上出錯。
如果有誤,請使用更精確的提示重新執行,或使用 --edit 進行修正。
失敗情況
腳本會以非零狀態碼退出,並顯示一條明確的訊息,且不會寫入任何內容。
- 找不到 codex CLI / 未登入:請安裝 codex 並執行
codex login;CODEX_BIN指向其他執行檔。 - 配額不足:請等待 codex 報告的重置時間,或使用其他帳號。請勿在迴圈中重試。
- 未產生任何圖片:模型以文字回覆。會顯示其回覆內容;請以更簡單的圖片請求重新執行。
- 超時:只有在執行速度確實緩慢時,才調高
--timeout(預設 900 秒)。 - 使用
--fit時缺少 Pillow:請執行pip install Pillow,或移除--fit。