AI 生成的 360 全景圖,為什麼手機打不開?我寫了一個 GPano Metadata 修復工具

AI 生 360 全景圖很方便,一句 prompt 就能生出 2:1 環景圖。

但我昨天幫小朋友做吉伊卡哇全景圖時,踩到一個很真實的坑:

在 GPT 裡看起來像 360,全景播放器裡也能拖來拖去,但下載到手機之後,它就只是一張普通圖片。

一開始我以為是 AI 出包,後來才發現真的不是它的問題(對不起,好朋友我錯怪你了)——問題出在檔案裡少了一段「告訴系統這是全景圖」的 metadata。

TL;DR

2:1 比例只是全景圖的外表,真正讓手機、Facebook、Google Photos 認出「這是 360 照片」的,是藏在檔案裡的 GPano XMP metadata。 我把「檢查比例、自動裁切、轉 JPG、補 metadata、批次輸出」整套流程包成一個 Windows 小工具,點我下載,防毒會擋掉,記得允許。


為什麼 AI 生成的全景圖,下載後不能 360 旋轉?

平台判斷一張圖是不是 360 全景,看的不是畫面內容,而是檔案裡有沒有寫 GPano XMP metadata。沒有這段資訊,就算比例是完美的 2:1,也只會被當成普通照片。

很多人以為圖片夠長、比例是 2:1、左右能接起來,這樣就是 360 全景圖了——其實只對一半。畫面內容適不適合當全景圖是一回事,檔案格式有沒有講清楚「我是全景圖」是另一回事。

GPT 內建預覽看起來很順,是因為它用自己的 viewer 幫你「演」出 360 效果。但檔案一旦下載出來,系統看的就不再是「像不像」,而是「metadata 有沒有寫對」。


關鍵缺的東西:GPano XMP metadata

GPano(Google Photo Sphere) 是目前手機、Facebook、Google Photos 辨識 360 全景圖最常見的 XMP metadata 規範,透過幾個固定欄位告訴平台「這張圖請用全景模式打開」。

一般人真的只要記住這 5 個就夠:

欄位白話說明
ProjectionType這張圖用哪種方式攤平(幾乎都是 equirectangular),沒寫這個平台根本不知道你是全景圖還是長條海報
FullPanoWidthPixels / FullPanoHeightPixels完整球面世界有多大
CroppedAreaImageWidthPixels / CroppedAreaImageHeightPixels你這次實際輸出的畫面有多大
CroppedAreaLeftPixels / CroppedAreaTopPixels這塊畫面在完整世界裡的座標位置
InitialViewHeadingDegrees打開時鏡頭預設先看哪個方向

如果你的圖是完整全景(不是裁切局部),邏輯很單純:完整尺寸=輸出尺寸,Left/Top 都是 0

💡 GPano 規範其實還有姿態角度(Pose...)、曝光、來源張數、有效顯示範圍等十幾個進階欄位,但那些對一般讀者是加分題,不是必修課。我做工具時也是把這 5 個當核心必填,其他統統給合理預設值,不用你手動理解。


找不到順手的轉檔工具,乾脆自己寫一個

我原本有找現成工具,但看了一輪不是介面複雜到像在跟 metadata 對決,就是參數多到讓人想放棄,不像在處理圖片。

所以最後最省事的方法反而是:直接寫一個專門處理 AI 360 圖的 Windows 工具。

github 專案在這裡,打包後就是一個 360 全景圖工具.exe,不是單純幫你塞一個欄位進 EXIF,而是把輸入到輸出整段流程都包起來。

360-pano-tool-ui-01.png


這個工具實際上做了什麼?

  • 批次處理:單張、多張、整個資料夾都行,需要的話子資料夾也能一起掃進來,AI 生圖常常一次出好幾版,不會想每張手動存。
  • 自動抓 2:1 比例,不符合就照你的規則處理:可以選「自動裁切成 2:1」「跳過這張圖」「照原圖輸出」,裁切保留位置 X / Y(%)還能自己調,不會每次都從正中間硬切。我拿專案內的樣本測過:sample_alpha.png1000 x 700)處理後變成 sample_alpha_360.jpg1000 x 500),確實會裁到標準比例。
  • 統一轉成 JPG:輸入吃 jpg / jpeg / png / webp / bmp / tiff / tif,輸出統一轉 JPEG(目前最穩的 360 metadata 載體)。透明背景會先補底色再轉檔,底色可以自己指定(白底、黑底或任意色碼)。
  • 真的把 XMP 寫進 JPEG,不是只改檔名交差:我直接檢查過輸出檔,GPano:ProjectionTypeequirectangularCroppedAreaImageWidthPixels 這些欄位真的被寫進 JPEG 的 APP1 segment 裡,metadata 是跟著輸出檔一起走的。
  • 進階 metadata 可調,但預設值就夠用:角度、曝光、有效範圍這些進階欄位,工具都給了合理預設,一般人不用碰。
  • 有桌面 UI,不用背命令列Tkinter 介面,基本設定 / 進階 Metadata / 處理紀錄 三個分頁,加圖片、拖資料夾、看每張的處理狀態(待處理/處理中/完成/失敗)都在裡面。
  • 輸出控制很實際:輸出到原圖旁邊或指定資料夾都行,檔名後綴預設 _360JPEG 品質預設 95 且可調,同名檔要不要覆蓋也能選。

這工具適合誰?不適合誰?

適合:

  • 會用 AI 生 360 圖,但懶得研究 metadata 細節的人
  • 想把圖丟到手機相簿、Facebook 或全景檢視環境的人
  • 一次要處理很多張圖,不想每張手動修的人

不適合:

  • 期待它能救回一張本來就「左右接不起來」「地平線歪掉」「透視本來就怪」的爛圖——它修的是格式跟 metadata,不是構圖

老實說,如果你的 AI 全景圖本身接得不好,這工具救不了你,你該回去換 prompt 重生成,而不是想靠補 metadata 補救內容問題。而且就算 metadata 寫對了,不同平台辨識邏輯還是可能有落差,它的定位是「把相容性拉高、把手動工作量降下來」,不是保證所有平台都同一個結果。


常見問題

Q:AI 生成的全景圖,為什麼一定要補 metadata 才能用? A:因為手機相簿、Facebook、Google Photos 判斷「是不是 360 全景」,看的是檔案裡的 GPano XMP metadata,不是看圖片內容。沒有這段資訊,再標準的 2:1 equirectangular 圖也只會被當成普通照片。

Q:這個工具支援哪些圖片格式? A:輸入吃 jpg / jpeg / png / webp / bmp / tiff / tif,輸出統一轉成 JPEG,因為這是目前 360 metadata 最穩的載體格式。

Q:不是 2:1 比例的圖片一定要裁切嗎? A:不一定。工具提供三種策略:自動裁切成 2:1、跳過這張圖、或照原圖輸出,看你自己需求選。

Q:補完 metadata 就保證所有平台都認得出來嗎? A:不保證。不同平台的辨識邏輯還是可能有差異,這工具能做的是把相容性拉高、把手動補欄位的工作量降下來,不是 100% 保證每個平台都同一個結果。

留言區

載入中...

發表留言