PhotoToolsPhotoTools
Home/部落格/如何為網站壓縮圖片而不損壞品質

如何為網站壓縮圖片而不損壞品質

在不產生可見畫質損失的前提下壓縮網站圖片,本質是讓每張圖對應到它真正的用途:顯示尺寸、裝置像素比、圖像格式、壓縮強度,以及它到底是 LCP 首屏圖、商品圖、截圖、縮圖,還是背景圖。本文提供可落地的參數與可重複使用的複審流程。

By PhotoTools Editorial Team · Updated 2026 年 7 月 18 日

已於 2026 年 7 月 18 日對照 PhotoTools 的壓縮與縮放行為、MDN 的畫布輸出文件、Google 的 WebP 文件、Chrome 的圖像交付建議,以及 web.dev 的圖像效能指南進行核對。

在瀏覽器裡壓縮圖片,無需上傳

免費 · 無需上傳 · 在瀏覽器中運行

一句話說清楚

壓網站圖片卻不掉畫質,關鍵不是一開始就把品質滑桿拉到「還能忍」的最低值。真正的起點,是這張圖在頁面裡到底做什麼用。首屏 Hero、可放大的商品圖、部落格配圖、頭像、介面截圖與背景紋理,各自需要不同的尺寸、格式和品質。

一條好用的規則是:先縮到實際展示的最大尺寸,然後在「在版面裡看不出變化」的範圍內適度壓縮。 一張部落格圖在頁面上寬 760 CSS 像素顯示,高密度螢幕下 1500–1600 px 的原始圖通常就夠了。5000 px 的相機原圖就是浪費資料;反過來,直接輸出 760 px 又會在 Retina 上偏軟。合適的檔案在兩個極端之間。

「不損失畫質」也需要一個務實的定義。放在網頁語境裡,通常指的是在訪客真正看到的尺寸下沒有可見的畫質損失,而不是數學意義上的像素級完全一致。壓縮後的 WebP 與原檔並不相同,但在頁面裡可以做到視覺上分辨不出。

先判斷這張圖屬於哪一類

在選 WebP、AVIF、JPEG、PNG 或一個品質數值之前,先把這張圖歸類:

圖片角色 常見展示尺寸 起手格式 起手品質 需要重點看的地方
LCP 首屏 Hero 寬 1200–2400 px AVIF + WebP/JPEG 備援 AVIF 45–65,WebP 78–85 天空、皮膚、陰影、品牌色
部落格/內文配圖 原始圖寬 1200–1600 px WebP,JPEG 備援 WebP 78–85 細節與漸層
商品列表縮圖 原始圖寬 500–900 px WebP WebP 70–78 文字標籤、邊緣、紋理
商品詳細圖 原始圖寬 1200–2000 px WebP 或 AVIF WebP 82–88,AVIF 50–70 放大後的細節與色彩還原
UI 截圖 實際顯示尺寸或 2x PNG 或無損 WebP 涉及文字用無損 文字、圖示、鋭利邊緣
Logo 或圖示 盡量用向量 SVG 不適用 縮放時保持清晰
背景紋理 只按展示尺寸輸出 WebP 或 JPEG 60–75 色帶與拼接縫

這張表故意帶態度。網站圖片壓得差,大多情況就是把所有素材當同一件事處理。首頁 Hero 會影響 Largest Contentful Paint;商品詳細圖會影響信任與轉換;裝飾性背景沒人細看,可以做得輕很多。

先縮放:尺寸做了大部分工作

壓縮降低的是「儲存這張固定像素網格」所佔的位元組;縮放改變的是像素網格本身。當原始圖的像素遠多於頁面能顯示的量,縮放才是最乾淨的省法。

一條簡單的定尺公式:

目標原始圖寬度 = 最大 CSS 顯示寬度 × 裝置像素比

例如:

  • 卡片圖以 320 CSS px 展示,2x 螢幕對應 640 px 原始圖。
  • 部落格圖以 760 CSS px 展示,原始圖 1500–1600 px。
  • 接近 1200 CSS px 的整寬 Hero,視裁切與受眾裝置可能需要 2000–2400 px 原始圖。

不要機械地給每張圖都用 3x。web.dev 提到,DPR 和版面是一起起作用的;在很多情況下,使用者根本感知不到超高 DPR 圖源帶來的好處。2400 px 的 Hero 可能合理;「像素多總沒錯」的 5000 px Hero,大多只是在燒頻寬。

PhotoTools 把這兩件事分開:需要精確像素或縮短長邊時用 Resize,然後在 Compress 裡挑 JPEG、WebP 或 AVIF,微調品質。

動品質之前先選格式

格式決定了「哪種細節可以被乾淨地移除」。

  • 多數網頁照片用 WebP。 現代瀏覽器廣泛支援,視覺畫質相近時通常比 JPEG 更小。Google 的 WebP 文件給出的對比數據是:相較同品質 JPEG 有 25–34% 的體積節省。
  • 對位元組錙銖必較時用 AVIF。 AVIF 在大幅照片素材上可以壓過 WebP,但編碼更慢,也會讓交付鏈更複雜。要搭配備援格式使用,不要當作唯一輸出。
  • JPEG 當作相容備援。 電子郵件、老 CMS 流程、下載派送以及 <img> 的備援來源,JPEG 還是有用武之地。
  • 截圖與文字類內容用 PNG 或無損 WebP。 有損的 JPEG/WebP 會讓 UI 小字發糊,也會在銳利邊緣周圍出現色雜訊。
  • Logo 與圖示用 SVG。 點陣 Logo 轉 WebP 或許比 PNG 更小,但一個乾淨的 SVG 通常更清晰、也更輕。

如果用 <picture>,把最省的格式放前面,內層的 img 留一個相容備援:

<picture>
  <source
    type="image/avif"
    srcset="/images/hero-1200.avif 1200w, /images/hero-2000.avif 2000w"
    sizes="100vw"
  />
  <source
    type="image/webp"
    srcset="/images/hero-1200.webp 1200w, /images/hero-2000.webp 2000w"
    sizes="100vw"
  />
  <img
    src="/images/hero-1200.jpg"
    width="1200"
    height="800"
    alt="裝修完成的廚房,胡桃木櫥櫃配自然光"
  />
</picture>

img 仍然重要——它承載備援來源、altwidthheight。不要把無障礙資訊或版面資訊藏在 source 裡。

實際能落地的品質檔位

「品質數值」並沒有跨工具的統一標準。一個編碼器裡的 JPEG 品質 80,跟另一個編碼器裡的 80 未必等價;WebP 80、JPEG 80、AVIF 50 之間也不能畫等號。把品質當成起手值,再看輸出結果。

輸出 起手值 需要調高的時候 需要調低的時候
JPEG 備援 82–88 商品細節、人臉、圖上文字 裝飾性照片、背景、檔案仍然過大
WebP 照片 78–85 Hero、商品、作品集圖 縮圖、列表圖、簡單背景
WebP 縮圖 70–78 文字或紋理看起來發軟 圖很小但檔案還是不輕
AVIF 照片 45–65 出現色帶,皮膚/布料/細節崩掉 大 Hero 依然太重
PNG 不涉及有損品質 需要清晰邊緣的截圖或透明素材 只有目標端支援時才考慮 WebP/AVIF

一個常見誤區是「為了保險」把所有圖都輸出到 95 或 100。多數網頁照片裡,那些多出來的位元組只會出現在網路瀑布圖上,頁面上並看不出差別。另一個誤區是為了硬湊某個體積目標把品質壓到 50 以下。如果得壓這麼狠,先別繼續拉低品質,而是先縮尺寸或換格式。

依頁面角色分的體積目標

這些不是 Google 規則,也不是決定排名的魔法門檻。它們是實用的複審目標,幫你抓出明顯過重的圖。

素材 健康的工作目標 備註
頭像/作者頭像 10–40KB 通常 160–400 px 展示
卡片縮圖 15–60KB 列表圖尺寸應保持一致
部落格內文圖 60–180KB 與寬度和細節量有關
商品列表圖 50–150KB 標籤必須清楚可讀
商品詳細圖 120–300KB 為放大與紋理留餘裕
首屏 Hero 150–450KB 更大也可能合理,但要測 LCP
全螢幕作品集照片 250–700KB 有時候畫質比嚴格體積更重要
UI 截圖 30–250KB 文字清晰度勝過省幾個位元組

一張 760 px 的部落格圖如果 900KB,多半有問題。一張整寬作品集照片 410KB 但效果極好,硬壓到 90KB 反而是走錯方向。

LCP 與 Hero 圖的壓縮

最值得下功夫的圖,往往就是首屏最大的那張。用 Core Web Vitals 的說法,它常常就是 Largest Contentful Paint 圖。壓小它有幫助——前提是它還要能被「早發現、早載入」。

處理 Hero 圖時:

  1. 按頁面裡實際使用的長寬比裁切。
  2. 輸出多檔響應式寬度,例如 1200 px 與 2000 px。
  3. 如果技術棧支援,AVIF 放前面,WebP/JPEG 作為備援。
  4. 不要給 Hero 或首屏其他 LCP 候選加 lazy-load。
  5. 加上 widthheight,讓瀏覽器提前保留版面空間。
  6. fetchpriority="high" 只用在最有可能成為 LCP 元素的那一張上。

備援 img 範例:

<img
  src="/images/hero-1200.jpg"
  srcset="/images/hero-1200.jpg 1200w, /images/hero-2000.jpg 2000w"
  sizes="100vw"
  width="1200"
  height="800"
  fetchpriority="high"
  alt="裝修完成的廚房,胡桃木櫥櫃配自然光"
/>

不要給整個圖庫都掛 fetchpriority="high"。優先度提示是把鋒利的刀——留給那一張真的要最先到達的圖。

怎麼比較壓縮結果

正確的比較不是「原圖 vs 壓縮圖,100% 縮放」。那種比法只會讓你說服自己繼續發過大的圖。要在訪客真正看到的尺寸與情境裡比。

按這個流程走一遍:

  1. 把壓縮後的圖放到真實頁面,或同寬的測試版面裡。
  2. 桌面寬與手機寬都看一遍。
  3. 重點看容易出問題的區域:人臉、皮膚、天空、漸層、布料、商品標籤、小字,以及高對比邊緣。
  4. 在渲染尺寸下切換原圖與壓縮版。
  5. 只在很短的時間裡 100% 放大,用來抓明顯的偽影,不是為了追求沒人會看到的完美。

不同格式的壓縮偽影各有個性:JPEG 常見塊狀邊緣、振鈴、色雜訊;過壓的 WebP 會把紋理糊成一片;AVIF 推太狠會出現色帶與塑膠感;PNG 截圖則容易走到另一頭——看起來完美,但重得離譜。

一個 PhotoTools 的網頁圖處理流程

PhotoTools 適合放在圖片進入 CMS、CDN 或程式碼倉庫之前。它取代不了完整的建置管線,但對小型網站、部落格文章、給客戶的預覽稿以及一次性素材,它提供了一條乾淨的手動流程。

  1. 保留原始來源檔,不動。
  2. 定角色:Hero、內文圖、商品圖、截圖、縮圖或背景。
  3. 原圖遠大於展示尺寸時,先用 Resize
  4. 打開 Compress,選 JPEG、WebP 或 AVIF,WebP/JPEG 從品質 80 附近起手。
  5. 按下 “Compress all”,逐張看原始體積、輸出體積、節省比例。
  6. 下載結果,放回頁面情境裡檢查。
  7. 視覺上不過關,就回到原圖或縮過的中間稿,換更高品質重新輸出。
  8. 還是過重,就先縮尺寸,再考慮把品質壓進偽影區。

不要反覆對已經壓過的下載稿再壓縮——有損偽影會疊加。回到母檔或乾淨的縮放中間稿再來。

中繼資料與隱私

相機檔案常常帶 EXIF 中繼資料:GPS 座標、拍攝時間、機身型號、鏡頭、編輯軟體等。這些對訪客看圖並無幫助,反而可能洩漏私人資訊。

PhotoTools 的壓縮流程是:解碼檔案、把像素畫到瀏覽器的 canvas 上,然後輸出一份新檔案。MDN 文件提到,OffscreenCanvas.convertToBlob() 可以為支援有損壓縮的格式指定圖片類型與品質。由於輸出是由 canvas 上的像素生成的,相機中繼資料通常不會被帶入新檔案。

涉及敏感照片時,請在發布前用中繼資料檢查工具再驗一次最終下載稿。隱私不只是檔案大小的問題。

會讓圖看起來變差的常見錯誤

  • 壓縮早於縮放: 你在試圖從「版面根本不會展示的像素」裡省位元組。
  • 給照片用 PNG: 對相機圖,PNG 通常大得離譜。
  • 給帶文字的截圖用 JPEG: 體積或許更小,但文字會糊。
  • 在錯誤尺寸下判斷: 全解析度放大會把無害的偽影渲染得觸目驚心。
  • 給所有裝置只出一張巨大的 Hero: 手機使用者白白下載了自己用不上的桌面像素。
  • 給 Hero 加 lazy-load: 首屏以外的圖可以 lazy-load,LCP 圖不行。
  • 不寫 widthheight 圖片載入時頁面可能跳動。
  • 對線上已壓過的檔案再壓: 能回原檔就回原檔。

一份精簡的發布前清單

上傳一張網站圖之前,走一遍:

  1. 這個格式適合當前內容類型嗎?
  2. 原始圖寬度是不是基於真實展示寬度與合理 DPR 定的?
  3. 若行動版 Hero 有不同裁切,是否準備了更小的行動版候選?
  4. 品質檔能不能撐住人臉、標籤、漸層、商品細節?
  5. 檔案大小對它的角色而言算合理嗎?
  6. 頁面上有沒有 widthheight、有意義的 alt,以及在需要時的響應式 srcset/sizes
  7. LCP 圖是否 eager 載入並優先,首屏之外的圖是否 lazy-load?
  8. 有沒有把輸出的圖放回真實版面裡看過?
  9. 是否留了原始來源檔?

好的壓縮流程是那種「合理地無聊」:挑對像素、挑對格式、用合理品質輸出、放回真實頁面裡看、在圖開始顯出「加工感」之前收手。

參考的技術資料

本文對照了 PhotoTools 目前的壓縮與縮放實作、web.dev 的圖像效能指南Chrome 的「Improve image delivery」洞察Chrome 的「Properly size images」建議MDN 的 OffscreenCanvas.convertToBlob() 文件MDN 的圖像檔案類型指南 以及 Google 的 WebP 文件

常見問題

如何在不損失畫質的前提下壓縮網站圖片?

先按圖片實際展示的最大尺寸縮放,再用合適的格式輸出。WebP 或 JPEG 從品質 80 附近起手,然後在渲染後的頁面尺寸下比較結果。等到在版面裡看起來和原圖無異就停手,而不是等到檔案小到不能再小。

網站圖片最合適的壓縮品質是多少?

多數 WebP 照片用 78–85,JPEG 備援用 80–88,縮圖 70–78,AVIF 起手區間 45–65。各編碼器的「品質」不是同一把尺,一定要以肉眼判斷輸出結果。

網站圖片應該先縮放還是先壓縮?

先縮放,再壓縮。縮放直接去掉不必要的像素,壓縮把剩下的像素存得更省。用合適尺寸配中等品質輸出,幾乎總是勝過把一張大圖硬壓到低品質。

網站圖片要選 WebP 還是 JPEG?

在現代網站上 WebP 通常是更好的交付格式:檔案更小,還能支援透明。JPEG 留給電子郵件、老工具,以及不接受 WebP 的第三方系統當備援。

網站圖片是不是都要用 AVIF?

不必。AVIF 更適合大型首屏圖、圖庫和高流量頁面——那些每一位元組都值的場景,並且你能同時提供 WebP 或 JPEG 備援。小縮圖、小團隊的話,WebP 通常更簡單。

網站圖片的檔案大小應該控制在多少?

工作參考:小縮圖 15–40KB,文章配圖 60–180KB,商品列表圖 50–150KB,商品詳細圖 120–300KB,首屏 Hero 圖 150–450KB。細節豐富的圖可能更大。

壓縮後的網站圖片為什麼看起來發糊?

通常是圖片被縮得太小、上傳時低於展示尺寸、用 100% 縮放而不是渲染尺寸來判斷,或 JPEG/WebP 品質開得太低。再降低品質之前,先確認一下尺寸。

壓縮圖片對 SEO 有幫助嗎?

有間接幫助。更小、更合尺寸的圖能降低下載時間、有機會改善 Largest Contentful Paint。但圖片 SEO 仍然需要有用的頁面內容、alt 文字、標註尺寸,以及內容相關的圖像本身。

在瀏覽器裡壓縮會去掉 EXIF 中繼資料嗎?

基於畫布的輸出通常是從像素重新生成一張新圖,不會把 GPS、機型、拍攝時間等相機中繼資料帶進新檔案。涉及隱私時請再確認一次最終檔案。

已經發布的圖片還能再壓一次嗎?

可以,但盡量從原檔起手。把已壓縮的網頁圖下載下來再壓一次,會讓畫質損失疊加。更穩的做法是從母檔重新輸出,替換掉線上素材。

繼續閱讀