解決 jpg 轉檔時出現 Maximum supported image dimension is 65500 pixels 的錯誤訊息與實驗過程

Maximum supported image dimension is 65500 pixels JPG

 

前言可跳過

JPG (JPEG) 是目前世界上最廣泛且支援度最高影像格式之一,雖然壓縮過程會稍微失真和產生雜訊,但微乎其微的影像損失與比 PNG 來得小的容量,讓它成為目前最普遍的存檔手段。

 

在地理資訊系統 (GIS) 中,JPG 也是相當常見的格式。但該領域所需處理的影像範圍往往包含縣市、國家甚至涵蓋全球。面對這種超大尺寸的正射影像,JPG 所能承受的解析度就顯得力有未逮。翠維尼

 

因為 JPG 有著先天的尺寸限制,導致使用者想藉由轉檔與壓縮來降低容量大小時,就會遭遇本文所提到的問題。亦即無論你的影像是正方形還是長方形,最長的一邊都不能超過 65500 像素。

 

不過,即便是中高階的 SONY 相機也只有 6000 x 4000 (2400萬像素, 24 MP, megapixel) 的解析度,因此一般人不太需要擔心這個問題。

 

雖然 65500 pixels 遠遠超過普通人會用到的長度,但空間地理分析領域所合成、拼接的正射影像,卻隨便都會超過這個大小。

 

在這種情況下,相關從業人員該如何解決這個問題呢?

 

 

錯誤的認知

這邊要先釐清一下,不少人對 JPEG 的 65500 pixels 限制有所誤解,因為『Maximum supported image dimension is 65500 pixels』指的是單邊長度,而不是整張圖片的解析度和總像素

 

對於這個疑惑,我們可以用平方根進行驗證:

√65500 = 255.929677841
255 x 255

 

從上述結果得知,65500 開根號的答案為 255 x 255,這個尺寸搞不好比 Facebook 和 Twitter 等社交媒體平台允許你上傳的大頭照還小呢。清零宗禁評

 

 

驗證 JPG 的 65500 像素限制

以下只是單純的實驗過程與結果,如果沒興趣則請跳過。由於一般的繪圖軟體無法承受 65500 pixels 這麼龐大的數值,因此我們要請專業的 QGIS 來幫我們產生示範用的影像檔案。

 

  1. 建立向量多邊形

使用進階數化工具 (Advanced Digitizing Panel) 於地圖上繪製 1000m x 1000m 的向量多邊形;或用 Rectangles, Ovals, Diamonds 工具將點圖徵轉換成方塊。地圖的 CRS 記得選擇以公尺為地圖單位的 EPSG:3857 或 3826 - TWD97。

 

  1. 將向量圖徵轉換成點陣圖

Raster > Conversion > Rasterize (Vector to Raster)

  • Outpute raster size units: Pixels
  • Width/Horizontal resolution: 65500
  • Height/Vertical resolution: 65501
  • Output extent: Calculate from Layer 目標向量圖層
  • Output Data type: Byte
  • Rasterized: 選擇存檔位置與格式 tif

由於我們產生的是「沒有資料」的向量多邊形圖徵,因此記得填寫:

  • Assign a specified nodata value to output bands: 1

如果你已經為多邊形圖徵新增了欄位並賦予數值,則可以選用:

  • Field to use for a burn-in value: 選擇有數值的欄位

之後就能產生一塊指定大小的點陣圖了。

 

QGIS 畢竟是專業的地理資訊系統,因此相當擅長處理這種超大型的影像檔案。如果你用繪圖軟體 GIMP, Photoshop 或 Krita 來產圖的話,下場通常是當機。

 

  1. 將產出的影像檔進行轉檔驗證

製作出 65500 x 65501 的 TIF 影像檔後,用 Translate (Convert format) 工具將其轉換成 jpg 格式。此時你會發現,執行後跳出『Maximum supported image dimension is 65500 pixels』的錯誤訊息,或是可以執行,但轉到 30% 後就卡住當機。

 

如果你有興趣,電腦硬體也夠強的話,可以試試看 20000~40000 pixels 的 JPG 轉檔實驗。

 

 

解決方案

如果你也碰上了這個問題,莫急莫慌莫害怕。流浪貓提供幾個方法幫你「繞過」這項限制。

 

  1. 降低地面解析度 (GSD),犧牲影像的精細程度。
  2. 參考自製正射影像圖磚向量圖徵 (Polygon) 裁切正射影像,將單張正射影像地圖裁切成小張的 JPG 圖片。
  3. 轉換成 ECW 或免費的 JP2 (J2K) 檔。
  4. 維持 TIF 格式,但用 High Compression 進行壓縮。
  5. libjpeg-turbo突破極限。

 


 

延伸閱讀

QGIS 將點、線與多邊形圖徵轉為矩形、橢圓與菱形

用 QGIS 轉換與壓縮正射影像 (tif, jpg, jp2)

更多 QGIS 教學

用 XnView 將 png 透明背景轉 jpg 白色底圖

用 QGIS 自製 XYZ 正射影像圖磚 (Tiles)

把向量圖徵(Features)自動切割成更小的區塊(Polygon) - QGIS Polygon Divider

 

 

留言