快轉到主要內容
  1. 生成庫/

LINE 貼圖

我有九支 app,其中三支有夠強的視覺角色可以撐起一套貼圖:紅樓夢模擬器的人物、假名私塾的蛋殼小雞、甘特星球的礦工小孩。三套一起做,72 張。

甘特星球那套已經上架 LINE 貼圖小舖;另外兩套做到可上傳的狀態但還沒送審。這頁講的是製作,不是成績。

紅樓夢模擬器 · 16 張
#

圖 1 · 古典白話文案
十六張紅樓夢人物貼圖排成兩列,角色為賈母、黛玉、寶釵、寶玉、鳳姐,文案為今兒起得早、夜深了安置罷、多謝費心、就此別過等古典白話
圖說:五個角色分擔十六種語氣。文案刻意不寫「早安」寫「今兒起得早」—— 貼圖賣的是角色的腔調,翻成現代白話就沒有人要買了。

這套幾乎沒有從零開始 —— 因為素材庫裡每個角色本來就有八種表情。

十六張貼圖只用到五個角色(賈母、黛玉、寶釵、寶玉、鳳姐),但每一張都是從那八種裡挑一種當參考圖:03 多謝費心 用的是寶釵的 serious、12 我命好苦 用的是黛玉的 crying、13 反了反了 用的是鳳姐的 angry。丟給生圖模型的檔案跟素材庫裡那張是同一個位元組。

所以這套貼圖真正花掉的成本不是「想十六種情緒」,而是幫既有的情緒加上手勢跟貼圖框。素材庫先做好八種表情,這裡就少做一整輪 —— 這是那個決定在別的地方回收的地方。

假名私塾 · 40 張
#

圖 2 · 一個假名一張,三層資訊
四十張蛋殼小雞貼圖排成四列,每張蛋殼上寫一個平假名,上方有日文短語,右下角有中文小吊牌
圖說:每張三層 —— 上方日文短語、蛋殼上的假名大字、右下角中文小吊牌。四十張剛好是 LINE 允許的最大組數,也剛好是一輪五十音。

這套的設計限制最有意思:它同時是貼圖也是教材。純日文短語看不懂的人不會買,純中文又失去學習的意義,所以三層資訊必須在 370×320 的框裡同時成立、而且在聊天室縮到很小的時候,最先被認出來的要是蛋殼上那個假名。

也因為這樣,這套在去背上踩最多雷 —— 見下面。

甘特星球 · 16 張
#

圖 3 · 挖礦當隱喻
十六張礦工小孩貼圖排成兩列,角色戴工地帽與護目鏡、拿電鑽,文案為早安開工、超讚、氣噗噗噗、想你了等,使用毛筆字體
圖說:app 本身是「把自律變成挖礦」,所以貼圖的問候語也全部往開工、加油、收工那個方向靠。毛筆字是為了跟另外兩套區隔開。

講一點做法
#

一、去背不要用一種演算法硬幹
#

這是這三套裡最貴的一課。

直覺的做法是找一個去背模型、調參數,調到四十張全對。這條路走不通,因為四十張的失敗模式各不相同:小雞的眼白會被吃掉、蛋殼內部的白會被當背景填掉、假名圈圈裡的白該留該挖不一定、右下角那個離主體很遠的小吊牌會被整個切掉。任何一組全域參數,修好其中一種就會弄壞另一種,你會在原地繞圈。

正確的做法是 80/20

  1. 用一種方法把八成做對
  2. 把每張壓到高對比色(洋紅或純藍)上,一眼掃過去
  3. 標出有問題的那幾張
  4. 每張各自挑最適合的方法補,包括用手改

四十張裡有問題的通常四五張。在那四五張上花五分鐘手工,勝過花一小時找一組完美參數 —— 而且後者通常還會製造新的問題。

幾種方法各自的脾氣:

方法擅長會壞在哪
通用去背模型(u2net)主體連續時形狀保得好吃掉離主體遠的小元素(那個吊牌)
銳邊模型(isnet)邊緣乾淨吃掉封閉形狀內部的白(蛋殼)
動漫專用模型——對這種畫風太兇,常把身體吃掉,別用
從邊緣漫溢的色鍵法保得住封閉的白(蛋殼、假名圈圈)主體只要有一處跟背景連通就整片吃穿
分區處理上半用一種、下半用另一種只在需求真的衝突時才值得
直接用程式重畫錯字、吊牌—— 五行程式碼的事,不要為了它去重新生圖

假名私塾那套最後是分區處理:蛋殼上的大假名要保留白色,上方短語裡的假名圈圈卻要挖成透明 —— 同一種形狀、兩種相反的需求,只能拆開處理。

二、白邊是留是剝,取決於背景不是取決於你
#

生圖模型吐出來的字通常自帶一圈白邊。它在你的螢幕上看起來有點笨,但在聊天室裡它是必需品:

圖 4 · 同四張,剝掉白邊 vs 補上白邊
四張甘特星球貼圖的兩種版本並排壓在藍色聊天室背景上,上排的黑色毛筆字幾乎融進背景,下排有白邊的字清楚浮出
圖說:兩排是同樣四張,壓在聊天室的藍底上。上排剝掉了白邊,黑色毛筆字幾乎融進背景;下排補齊白邊之後才讀得出來。這個差別在透明底或白底上完全看不出來。

所以驗收一定要在有色背景上做。 在檔案總管裡看縮圖,白邊問題永遠不會現形。LINE 後台有一個「更換背景色確認去背處理」的下拉選單就是為了這件事;等不及上傳的話,自己寫五行程式把貼圖疊到洋紅色上也一樣。

補白邊有一個關鍵細節:只填目前透明的像素。角色臉上的眼鏡框、電鑽的輪廓線也是黑色細線,如果不加這個條件,它們周圍也會被補上一圈白,整張圖就毀了。另外要先把細線侵蝕掉一輪再當種子 —— 毛筆字有八到十五像素粗,撐得過一次侵蝕;兩像素的輪廓線撐不過,自動被排除在外。

三、先做五張
#

四十張全部生完才發現風格不對、背景沒去乾淨、中文字寫錯 —— 這是最貴的失敗,而它完全可以避免。

規矩是:先做主圖、標籤、加四到五張貼圖,跑完整條後製流程,上傳到後台在彩色背景上看過,確認沒問題,再生剩下的三十五張。這十分鐘的前置,省掉的是一兩個小時的補救。

四、第一版是丟掉的那一版
#

紅樓夢那套最早不是這樣做的。第一版是本機用程式把素材庫的立繪直接加上白邊字幕合成的 —— 完全沒動到生圖模型:

圖 5 · 第一版與最終版
四組紅樓夢貼圖的兩個版本並排壓在藍色背景上,上排是方形未去背的立繪加字幕,下排是去背後帶手勢與表情的重繪版
圖說:上排第一版 —— 直接拿素材庫的立繪貼字,方形、沒去背、人物是原本的靜態姿勢。下排最終版 —— 把同一張立繪當參考圖重畫,有手勢、有情緒、去背完成。

第一版能用嗎?能。而且它便宜得多 —— 素材已經在那裡,只要貼字。但它一眼看得出是「圖片加字」而不是貼圖,差在姿勢

這正好是素材庫那個取捨的另一面:立繪為了維持八種表情的一致性,把姿勢鎖死了,情緒全靠臉。那個選擇在 app 裡是對的(讀者的視線在對話框旁邊的臉上),但貼圖不一樣 —— 貼圖的情緒有一半在手上。所以最終版必須把立繪丟回生圖模型重畫一次,換來手勢,代價是一致性從「結構上保證」退回「看起來夠像」。

同一批素材,兩個用途,最佳解相反。

留著第一版是有用的 —— 它是那條「為什麼要多花這一步」的證據。

沒講的部分
#

  • 色鍵漫溢的容差怎麼定,以及背景在同一批輸出裡從灰白格子變成純黑時怎麼自動辨識(這個坑很陰)
  • 判斷背景型態時為什麼不能用「很亮很暗」的合併條件(會從背景吃穿到黑色毛筆字裡)
  • 補白邊的侵蝕次數與擴張半徑怎麼配
  • 16 句 SNS 短語的標準覆蓋表 —— 一套貼圖要蓋住哪些情境才夠用
  • 生圖提示詞怎麼從角色參考圖產生,以及怎麼壓住模型亂寫中文字

這條線的去背與批次處理,跟素材圖庫那 2,545 張同源。有一批「同樣的處理要做幾百次」的圖片工作?委託頁