一張 AI 生的背景圖好不好看,跟能不能拿來當簡報封面,是兩件事。這份筆記講後面那件。
先看對照實驗投影片 同一句標題壓在十張背景上,附機械量測 · 另一份:開源網頁簡報生態盤點
先看這個
怎麼做
拿去用
整份筆記的結論。第 2 到第 7 節逐一展開。
常見的失敗流程是這樣:打開生圖工具,輸入「一艘揚起白帆的帆船,在平靜藍色的海面上行駛」,得到一張很好看的圖,然後發現它沒辦法用。
失敗有三種長相:
反過來說,可用的背景圖要同時滿足四件事:足夠的留白區塊、單一而清楚的視覺主體、可控的明暗對比、跟主題對得上的敘事張力。
影片裡的原話是「背景圖好看的標準就是具有恢弘感」。我把它拆成上面四項,因為「恢弘感」不能拿來驗收,留白率跟對比度可以。
這份筆記的每一個數字都出自 experiments/verify.py。它把畫面切成六塊候選文字區,每塊量兩件事:
兩項都過的算一塊可用,寫成「幾 / 6」。門檻訂 5.0 是因為任何平坦色塊都過得了 WCAG 的 4.5,那條線擋不住東西。工具本身也有負控制:verify.py --self-check 會確認純黑圖六塊全過、隨機雜訊圖一塊都不過、中間調死區不過。
第 4 集的影片畫面上直接把完整提示詞打出來了,逐字讀回來是這樣(原文為簡體,照原樣引用):
提示词:一个宇航员坠落在银河中心。倾斜构图。银河由恒星、柔和星云与细腻星尘构成。银河整体呈现流动、半透明的光带形态,如同被引力弯曲的银河旋臂,空间干净而开阔,背景为深蓝至黑色留白。宇航员及其周围被暖金色主光源照亮,宇航员轮廓清晰、对比强烈,亮度明显高于环境,强调尺度对比与孤独感。 极简风格,超现实宇宙场景,超广角视角,电影级光照,轻体积光获奖摄影作品。
提示词:前景:一名宇航员在画面的左下角,背对镜头坐在崎岖岩石上,穿着写实宇航服,仰望天空上的地球,荒凉的岩石地貌延伸至地平线。远景:薄雾般的云海与低矮山峰,天空中一颗巨大地球占据画面上方,地球边缘带有冷色轮廓光,深空背景布满恒星、星云与微弱星尘。整体色调偏冷的深蓝、灰蓝与暗褐色。高对比,电影级光影,史诗感与孤独感并存,超写实,科幻概念艺术,8K,高细节,宽画幅构图
這是我們第一輪做壞的原因,值得單獨講。
| 第 3 集 | 第 4 集 | |
|---|---|---|
| 視覺語言 | 紀實攝影 | 深色超現實概念藝術 |
| 案例 | 飛機、貨輪、燈塔、衝浪者,全是白天實景 | 銀河、巨型星球、書上的太空人,沒有一張是攝影 |
| 留白長什麼樣 | 亮天空 | 深藍到黑的暗場 |
| 風格詞 | 國家地理攝影風格、自然光線、真實色彩 | 極簡、超現實、電影級光照、科幻概念藝術 |
我們第一輪拿第 3 集那張表去做第 4 集的技巧,於是生出白天的風景照。改成第 4 集的配方之後,白字對比從 5.25 到 13.61 這個區間,跳到 14.39 到 20.66。
要做紀實攝影風的背景時,這張四段對照表可以直接抄:
| 關鍵點 | 中文提示詞塊 | 英文提示詞塊 |
|---|---|---|
| ① 留白充足 | 簡潔構圖、留白背景、空曠空間、極簡風格、天空占比大、安靜氛圍 | minimalist composition, open space, clean background, wide empty sky, calm atmosphere |
| ② 主體宏大 | 主體占據畫面中心、大比例構圖、低角度仰視、宏偉尺度、史詩視角 | large-scale subject, centered composition, low-angle view, grand scale, epic framing |
| ③ 光影對比 | 強烈光影對比、陽光穿透雲層、逆光照射、金色陽光、冷暖對比色 | strong light and shadow contrast, sunlight through clouds, backlight, golden sunlight, warm-cool contrast |
| ④ 真實攝影感 | 國家地理攝影風格、自然光線、空氣透視、真實色彩、輕霧氛圍 | National Geographic photography style, natural sunlight, atmospheric depth, realistic colors, soft haze |
要有場面。飛機比滑翔翼合適,火箭比熱氣球合適,貨輪比翻覆的船合適。這一步選錯,後面的提示詞救不回來。
把主體放進一個不屬於它的宏大情境裡。定義很精準:尺度失衡指的是失衡,不是宏大。旋轉的風暴已經夠宏大了,畫面卻很無聊;在風暴中心放一艘小小的帆船,故事感立刻出現。
三種做法:
換主體不換方法:失重的太空人、躍入銀河的鯨魚、象徵榮譽的獎盃、壓迫到地面的巨型星球,共通點是主體被放進遠大於它的容器裡。
這是自己跑對照實驗才發現的,來源影片沒有講。
風暴眼裡的小帆船是所有圖裡最有力量的一張,但風暴雲填滿了整個畫面,唯一夠平坦的只剩右下那塊暗角。要用這招就要接受標題只有一個位置可以放。
在任何平淡畫面上加一個發光元素,就有了視覺中心。成本最低,而且可以直接加在既有的圖上。
同一組提示詞只換發光顏色,跑了三種:
顏色隨便換都好看,是因為暗場與發光主體的關係沒有動。這句話的完整版應該是「結構對了以後,配色可以隨便換」。
| 對照組 | 前 | 可放字區 | 後 | 可放字區 | 代價 |
|---|---|---|---|---|---|
| 提示詞四段結構 | 一句話 | 1 / 6 | 四段 | 3 / 6 | 沒有 |
| 尺度失衡 | 正常尺度 | 4 / 6 | 失衡 | 3 / 6 | 少一塊 |
| 光 | 平光 | 6 / 6 | 加光 | 6 / 6 | 沒有 |
圖生影片。分兩種情況。圖片本身就有動態,順著運動邏輯描述即可,短到一句就夠:
圖片偏靜態,用這句萬用公式:
需要固定主體位置就補一句「保持貨輪在畫面中的位置不變」。本身已經有動態的畫面再疊一層旋轉運鏡,張力會再翻一倍。元素動態加運鏡的配方是固定結構:先描述關鍵元素的動態,再指定運鏡方式。
要無限循環就把首幀和尾幀設成同一張圖,再描述兩幀之間的過渡。
關鍵是把 zoompan 的所有運鏡參數寫成 1-cos(2*PI*on/N) 的形式。這個式子在第一幀與最後一幀的值相同,所以首尾幀由結構保證一致,循環播放不會跳。
驗法是抽出第一幀與最後一幀逐像素比對平均色差:
| 成品 | 長度 | 檔案大小 | 首尾幀平均色差 |
|---|---|---|---|
| 銀河,緩慢推近 | 12 秒 | 1000 KB | 2.54 / 255 |
| 沙丘,推近加橫移 | 12 秒 | 502 KB | 0.46 / 255 |
剩下那 2.54 是 H.264 在銀河那種密集紋理上的壓縮雜訊,不是畫面跳動。這條路比 AI 的首尾幀同圖更可靠,因為無縫是算出來的。代價是它只能做推近與平移,做不出真正的環繞:平面的一張圖沒有深度資訊,繞不過去。這正是「以 XX 為中心,旋轉運鏡」非得靠圖生影片的原因。
成品在對照實驗投影片的第 15、16 頁,可以直接翻到那裡放。
<video autoplay muted loop playsinline>。muted 是自動播放的必要條件,瀏覽器擋的是有聲音的自動播放。背景影片本來就不需要聲音。playsinline 是給 iOS 的,少了它 iPhone 會跳全螢幕播放器。實測讀回來的狀態:
我們手上能用的是自架在區網那台的 gemini-web(Veo)。四次實跑全部逾時:728、1448、189、1448 秒,而且原因不是它慢。
/api/capabilities 回 video_capable: [2],四個帳號裡只有第二個做得到。VideoRequest 只有 prompt 與 timeout,所以現成的路是文生影片。底層的 _generate_media() 其實已經有 ref_path 可以掛檔,接上去就有圖生影片,還沒做。video 節點都沒有;截圖每次都停在「建立影片」的範本牆,對話串裡沒有任何使用者訊息。換 37 個字元的最短提示詞也一樣,排除提示詞太長。目前指向那個頁面本身:「建立影片」的落地頁寫著「試用範本或在對話中描述想生成的影片」,而服務是在範本牆的輸入框打字。合理的推測是那個輸入框不是真正的送出入口。這一步要開真瀏覽器互動看一次才能確定,還沒做。
公司的簡報常常沒得選圖。三個動作,順序不固定,看圖決定先做哪一個:去干擾、擴留白、壓暗背景突出主體。另一個常用的第零步是換天氣。
來源影片用的是豆包的內建擦除與擴圖。我們改用 Codex CLI 的 image-edit 模式跑同一套,看換掉工具還成不成立:
| 步驟 | 可放字區 | 白字對比 | 平坦度 std |
|---|---|---|---|
| 原圖 | 2 / 6 | 7.24 | 0.1101 |
| 換天氣 | 3 / 6 | 8.57 | 0.0986 |
| 去干擾 | 3 / 6 | 8.40 | 0.0970 |
| 壓暗並留白 | 4 / 6 | 8.72 | 0.0858 |
全是文字的簡報排不出版面。做法是給 AI 一張參考圖,加上簡報裡的幾個關鍵詞,讓它生成一整套風格統一的圖示。重點在風格統一:同一張參考圖是整套圖示的錨,換了參考圖就要整套重生成。
寫了一支,在這裡(會動)。純 WebGL 的 fragment shader,沒有引用任何函式庫,照同一套配方畫:暗場留白佔多數、單一暖色發光核心當視覺中心、核心刻意放右下把左上留給標題。
| 可放字區 | 白字對比 | 平坦度 std | |
|---|---|---|---|
| AI 生圖最好的一張 | 5 / 6 | 20.66 | 0.0023 |
| 程式畫的這一張 | 6 / 6 | 20.30 | 0.0004 |
代價是它畫不出具象主體,只能做抽象的光與結構。而且它本身就在連續旋轉,檔案大小是零,任意解析度。要的是「會轉的抽象背景」時,這條路最划算。
用 HTML 生成簡報的話,背景可以是一段會跑的程式:
| 要什麼效果 | 用什麼 | 怎麼要 |
|---|---|---|
| 三維動畫背景 | Three.js | 直接描述,例如「流動彌散漸變,四個顏色,前景一個金屬立方體,隨滑鼠位置旋轉」 |
| 現成三維場景 | Spline 社群 | 找到喜歡的效果,remix 後匯出 embed 連結貼給 AI |
| 著色器特效 | Shadertoy | 複製現成程式碼,連同修改要求一起送出 |
| 二維 WebGL 特效 | Unicorn Studio | remix 後匯出 HTML 嵌入碼 |
| 物理動畫 | Matter.js | 描述要哪種物理行為,並要求觀眾可以操作 |
| 互動插畫 | Rive 社群 | 下載動畫資源檔上傳,要求嵌入並自動播放 |
| 圖表 | ECharts | 貼官方範例程式碼,或直接上傳 Excel 與 CSV |
| 地圖 | Mapbox | 指定暗色、亮色或寫實風格,要求可拖曳縮放 |
這條路的已知缺陷:所有用 HTML 生成簡報的產品,都沒有好辦法做跨頁調整。想把第 2 頁的內容挪到第 5 頁,或把第 3、4 頁合併,都會變成大規模返工。解法是回到原始做法:先用文字把每一頁的內容邏輯梳理清楚,再一次送進去生成。
選題材
寫提示詞
驗收出圖
轉動態
1-cos 保證接得回去autoplay muted loop playsinline$imagegen(吃 ChatGPT 訂閱額度)。進 repo 前一律轉成 JPEG。experiments/verify.py,判準與負控制寫在第 2 節。| 宣稱 | 怎麼驗的 | 結果 |
|---|---|---|
| 提示詞四段結構有用 | 同主體 A/B 各一張 | 1/6 到 3/6,成立 |
| 尺度失衡讓畫面更有張力 | 同上 | 張力成立,但可放字區 4/6 掉到 3/6,有代價 |
| 加發光元素就有視覺中心 | 同上 | 過關區不變、對比 10.53 到 13.61,沒有代價 |
| 暗場留白比亮天空好用 | 兩輪十張一起量 | 對比 5.25–13.61 對上 14.39–20.66,差一個量級 |
| 生圖隨機性會不會讓方法失效 | 同一提示詞跑三次 | 構圖每次不同,可放字區都是 6/6,可用性穩定 |
| 配色可以隨便換 | 只換發光顏色跑三色 | 四色全部 6/6、對比 20.49–20.97,結構不動時成立 |
| 用程式也能畫出能放字的背景 | 自己寫一支純 WebGL shader | 6/6、對比 20.30、平坦度 0.0004 |
| 修圖三步換掉豆包還成立嗎 | 生一張爛圖再跑三步 | 2/6 修到 4/6;去干擾沒做乾淨、擴圖變成整張重畫 |
| 從靜圖做無縫循環 | ffmpeg 寫成 1-cos,抽首尾幀比對 | 平均色差 0.46 與 2.54 / 255,結構保證接得上 |
| 背景影片能在投影片自動播放 | 嵌進投影片讀播放狀態 | 會,前提是 muted |
| 自架的 Veo 能不能產背景影片 | 讀原始碼、實跑四次、拉 log 與截圖、修完重啟再跑 | 不能,卡點還沒定位 |
方法與案例的著作權屬於原作者「大师的AI小灶」。這份筆記只有整理、分析,以及我們自己生成的圖與程式。
第 3 節那兩段完整提示詞是從影片畫面逐幀讀出來的(1280×720 原幀放大三倍再讀,非縮圖猜測)。兩支影片都沒有字幕軌,逐字稿是本機跑 whisper large-v3-turbo 轉的,可能有辨識誤差;文件版的內容照原文整理。兩邊對得起來的部分才寫進來。
圖、量測程式、生成腳本都在 experiments/,可以自己重跑。