圖片語法是 ![替代文字](網址)。它就是前面多一個驚嘆號的連結。所以寫 ![台北 101 的夕陽](https://example.com/sunset.jpg),圖片就會以原始尺寸出現在這一行的位置,不必上傳,也不必寫 HTML。

中括號裡的替代文字(alt text)供螢幕閱讀器朗讀,也讓搜尋引擎理解圖片內容。圖片載入失敗時,它還會原地頂替,所以請認真寫,不要留空。

其他細節每個平台都不一樣:尺寸控制、圖片放哪裡、能不能直接拖檔案進去。下面各節逐一說明,而我們的編輯器會邊打邊把結果渲染出來。

重點速覽

語法![替代文字](圖片網址)
替代文字語法上可省略,實務上一定要寫
尺寸控制核心語法沒有,需改用 HTML img 標籤
本機或圖床相對路徑跟著儲存庫走,https 則到哪都能顯示
拖放上傳GitHub、GitLab、Notion、Obsidian 都支援

語法逐一拆解

重點摘要
  • ![替代文字](網址),驚嘆號就是把連結變成圖片的關鍵。
  • 替代文字語法上可省略、實務上必寫,因為圖片失敗時由它頂替。
  • 相對路徑跟著 Git 儲存庫走,https 網址則在任何地方打開都看得到。
  • Markdown 沒有寬度設定,要縮放就得用 HTML img 標籤,或乾脆換一張小圖。

三個部分,依序如下。

![倚著紅磚牆的紅色腳踏車](images/bike.jpg)

![公司標誌](https://cdn.example.com/logo.png "滑鼠懸停時的說明")

三個部分各自的職責

  • 驚嘆號的意思是「嵌入這個」,而不是「連到這個」。漏掉它就會得到一個文字連結,這也是整個語法最常見的手誤。
  • 中括號放替代文字。
  • 小括號放網址,後面還能加一段引號包住的標題,部分瀏覽器會在滑鼠懸停時顯示。

上面兩行都會變成 <img> 標籤。第一行成為 <img src="images/bike.jpg" alt="倚著紅磚牆的紅色腳踏車">。過程中沒有任何東西被複製或嵌入,因為 Markdown 裡永遠只有一個參照。這就是破圖幾乎都代表網址壞掉的原因。

四個步驟插入一張圖

  1. 先把圖檔放到它要長住的地方,可以是文件旁邊,也可以是你自己掌控的主機。
  2. 複製它的網址。在 GitHub 上請開啟檔案後取 raw 連結,不要用 blob 的那個。
  3. 在同一行依序打上 ![、一句簡短描述、](、網址、)
  4. 確認結果。把檔案丟進 Markdown 檢視器就能直接看到渲染後的樣子,原檔不會被更動。

有兩個寫法值得從 README 學起來。想讓圖片可以點擊,就把它包進連結:[![替代文字](圖片網址)](目標網址)。想把長長的 CDN 網址趕出正文,就用參考式寫法:內文寫 ![圖表][chart],檔案最後補一行 [chart]: https://cdn.example.com/chart.png,和參考式連結的原理完全一樣。

怎麼寫出有價值的替代文字

好的替代文字會用一句話描述圖片內容。「匯出選單的截圖,.html 按鈕被特別標示」勝過只寫「截圖」,而兩者都勝過一組空的中括號。螢幕閱讀器會朗讀它,搜尋引擎會索引它,網路慢的讀者最先看到的也是它。

三個值得養成的習慣

  • 描述內容,不是描述檔案。「季營收由兩百萬成長到五百萬」有資訊量,「chart.png」什麼都沒說。
  • 不要寫「一張圖片顯示…」。輔助軟體本來就會先報出這是圖片。
  • 純裝飾的圖就把中括號留空。分隔線或留白圖不需要描述,安靜比噪音好。

當資訊只出現在圖上

有時圖片帶有周圍文字沒有的內容,例如架構圖、統計圖,或一張表格的截圖。請把重點寫進替代文字,或在附近的段落再講一次。圖片是 Markdown 文件裡唯一無法用純文字讀取的部分,只畫在圖上的資訊,對一部分讀者等於不存在。

相對路徑、絕對網址,以及圖片放哪裡

https 開頭的絕對網址,在任何地方打開文件都能顯示。缺點是對方主機把檔案移除的那天就會破圖。images/diagram.png 這種相對路徑,則是以 Markdown 檔本身的位置為基準去解析。

![架構圖](docs/img/build.png)              相對路徑:適合儲存庫
![架構圖](https://i.example.com/x.png)     絕對網址:到哪都能顯示

相對路徑最適合放在 Git 儲存庫裡。圖片跟著文件一起走,每個分支的審閱者都看得到。但把同一份 Markdown 貼到沒有那個資料夾的地方,就什麼都不會出現。

圖片放哪裡,本質上是「誰掌控這個檔案」的問題。專案內的文件,就把圖片和文件一起提交,版本才會一致。部落格或要分享的筆記,請用自己網站的媒體空間或專門的圖床。盜連別人網站的圖,是一場慢動作的意外。

注意:網址裡有空白會讓解析器當場停住,請編碼成 %20。另外在 GitHub 上,從檔案頁複製到的是 blob 網址,那回傳的是網頁而不是圖片。

插圖:一份 Markdown 文件分別指向同資料夾中的圖片檔與遠端伺服器上的圖片

要縮放圖片就得用 HTML

Markdown 沒有寬度或高度選項。圖片一律以原始像素尺寸顯示,所以沒處理過的手機截圖常常佔滿整個畫面。這裡沒有冒號小技巧,也沒有取巧的辦法。要控制尺寸,就得降到 HTML 標籤。

<img src="images/screenshot.png" alt="設定頁面" width="420">

只設定 width,高度會跟著等比例縮放。GitHub 也接受百分比。幾乎所有渲染器都認這個標籤,本站的預覽窗格也一樣。

用 HTML 要付出的代價

  • 少數嚴格的渲染器會忽略內嵌 HTML,會做消毒的內容系統甚至會整段剝掉。
  • <img> 標籤內部完全不會再經過 Markdown 處理,所以請讓標籤獨立成一行。
  • 文件不再是純粹可攜的純文字,而這正是選 Markdown 而不選 HTML 的一半理由。

更好的解法通常是換一張小圖

在放進文件前就把圖檔縮小。寬 400 像素的 PNG 載入更快、列印更乾淨,也完全不需要 HTML。圖片語法參考對格式、資料夾與存放習慣講得更深入。

各平台的圖片支援情況

語法是共通的,周邊行為不是。常見去處的實際情況如下。

平台![替代文字](網址) 語法拖放上傳HTML 寬度控制
GitHub支援支援,議題與編輯器皆可支援
GitLab支援支援支援
Reddit不支援支援,以圖片貼文形式不支援
Discord不支援支援,以附件形式不支援
Notion貼上時轉換支援改用拖曳邊角縮放
Obsidian支援,另有雙括號嵌入支援,直接拖進儲存庫支援
VS Code 預覽支援支援,需搭配輔助鍵支援

表格背後的規律

開發者平台給你完整語法,聊天軟體則用上傳取代語法。在 Discord 和 Reddit 上,單獨一行的圖片網址會自動嵌入,效果等同於圖片語法。Obsidian 則在標準寫法之外多了雙括號嵌入,細節見 Obsidian 指南

造成破圖的四個小失誤

破圖幾乎都出自以下四個小失誤之一。

錯誤                                  正確
[標誌](logo.png)                      ![標誌](logo.png)
![標誌] (logo.png)                    ![標誌](logo.png)
![標誌](my logo.png)                  ![標誌](my%20logo.png)
![標誌](C:\Users\me\logo.png)         ![標誌](images/logo.png)

逐行看這四種錯誤

  • 第一行漏了驚嘆號,結果變成一個純文字連結。
  • 第二行在 ]( 之間多了空白,解析器不會替你接起來。
  • 第三行的檔名裡有沒編碼的空白。
  • 第四行指向某一台電腦上的路徑,所以全世界只有一個人看得到。

語法沒錯卻還是看不到圖

把網址單獨貼進瀏覽器分頁測試。404、需要登入、對方擋盜連,在文件裡都只會呈現同一種結果:一個安靜的空白框。把檔案貼進編輯器,幾秒內就能分辨是語法問題還是主機問題。

再往下就交給參考頁面。完整 Markdown 指南把圖片和連結放在一起講解,語法速查表讓你一眼查到寫法,轉換成 HTML 則說明匯出後圖片路徑會變成什麼樣子。

相關問題

立即使用編輯器

開啟編輯器