在 Photoshop 中為圖片加上陰影是五個控制項的操作:水平位移、垂直位移、模糊半徑、不透明度百分比,以及陰影顏色,全部透過圖層樣式對話框設定。瀏覽器版的Add Shadow to Image工具重現了完全相同的五個控制項——介於 -500 到 500 之間的整數像素位移、介於 0 到 250 像素的模糊半徑、介於 0 到 100 百分比的不透明度,以及六位數十六進位顏色——套用於本機的 JPG、PNG 或 WebP,然後將結果匯出為完整解析度的透明 PNG。陰影是使用瀏覽器的 Canvas API 繪製的——具體來說是 MDN 文件中記載的 CanvasRenderingContext2D shadowBlurdrawImage 方法——而畫布刻意放大,以免模糊與方向位移在原始影像邊緣被裁切。解碼、繪製、預覽渲染、PNG 編碼以及檔案下載,全部都在當前的瀏覽器分頁中完成,而不是在遠端伺服器上,這讓工作流程在視覺上等同於 Photoshop 的圖層樣式,同時省去為了快速製作縮圖、貼圖或產品模型而啟動 Adobe Photoshop 的麻煩。

add shadow to image photoshop
add shadow to image photoshop

Photoshop 的陰影:標準圖層樣式路徑

Photoshop 將陰影 (drop shadow) 暴露為圖層樣式,而標準路徑在近期版本中都相同:開啟圖層,執行 Layer > Layer Style > Drop Shadow,然後在對話框中設定控制項。這五個輸入與瀏覽器工具所暴露的控制項完全對應,所以你在本節學到的任何內容都可以原樣轉移。

  1. 在 Photoshop 中開啟影像,並確認要投射陰影的圖層已在 Layers 面板中選取。如果你的影像已經平面化,請先雙擊 Background 圖層將其轉換為一般圖層。
  2. 開啟 Layer > Layer Style > Drop Shadow,或在圖層名稱以外的區域雙擊以開啟 Blending Options,然後勾選 Drop Shadow 這一列。
  3. 設定 Blend Mode(通常為 Multiply)、精確的陰影顏色、Opacity 百分比、Angle(用來同時控制水平與垂直位移——0° 表示正下方)、以像素為單位的 Distance、Spread 百分比,以及以像素為單位的 Size(扮演模糊半徑的角色)。
  4. 點擊 OK 套用圖層樣式。Photoshop 會根據下方的圖層渲染陰影,你可以直接在文件視窗中讀取可見的位移。
  5. 匯出結果:File > Export > Export As,選擇 PNG,讓落在原始矩形外的陰影像素保持透明。

這就是正統的 Photoshop 路徑。如果圖層位於透明背景之上,Photoshop 會讓原始矩形外的陰影像素保持透明,這與瀏覽器工具複製的行為相同。這條正統路徑的代價,是啟動應用程式、開啟檔案、套用圖層樣式、再匯出的額外負擔——而當你只需要陰影本身時,瀏覽器版的本機工具可以跳過這些步驟。

何時可以跳過 Photoshop 來製作陰影

對於模型圖、縮圖、社群圖卡、貼圖以及簡報素材來說,為了單一個陰影而打開 Photoshop 實在太重了。應用程式必須啟動、檔案必須解碼、圖層樣式必須在透明畫布上渲染,還必須將平面 PNG 寫入磁碟。瀏覽器版的本機工具去除了這些負擔:從磁碟選取檔案、填入五個控制項、然後在同一個工作階段中下載結果,完全不需要上傳。你會得到相同的水平位移、垂直位移、模糊、不透明度與顏色輸入,以及相同的透明 PNG 輸出,差別只在於 Photoshop 不在這個循環中。

Add Shadow to Image:本機的替代方案

Add Shadow to Image工具接受一個本機 JPG、PNG 或 WebP,大小上限為 25 MiB,驗證輸入後,接著編碼出一張透明 PNG,其尺寸由原始大小加上為模糊與位移保留的邊距計算而來。這五個控制項與 Photoshop 的陰影輸入一對一對應:水平位移、垂直位移、模糊、不透明度,以及顏色。由於畫布是使用瀏覽器的 Canvas API 渲染,而不是透過第三方影像服務,檔案的像素資料從不離開你的電腦,而且不需要帳號或登入。

如何在本機為影像加上陰影

  1. 從你的電腦選擇一個本機 JPG、PNG 或 WebP。該檔案必須可被瀏覽器解碼,且大小不得超過 25 MiB;過大、不受支援或無法解碼的檔案會以可見的錯誤訊息被拒絕。
  2. 輸入水平位移與垂直位移,為介於 -500 到 500 之間的整數像素。正的水平值會將陰影向右移,負的水平值會將其向左移;正的垂直值會在下載的影像中將其向下移,負的垂直值會將其向上移。
  3. 輸入模糊半徑,為介於 0 到 250 之間的整數像素。這是套用於陰影邊緣的羽化量;0 會產生硬邊的位移複本。
  4. 輸入不透明度,為介於 0 到 100 之間的整數百分比。這控制了陰影像素在畫布上呈現的實心程度。
  5. 輸入陰影顏色,為精確的六位數十六進位值,例如#000000表示純黑,或#1a1a1a表示接近黑色的色調。
  6. 選擇 Add shadow。瀏覽器會將畫布擴張,以容納模糊加上方向位移,先以陰影狀態繪製來源一次,接著在沒有陰影的狀態下再繪製一次,然後將結果編碼為 PNG。
  7. 確認預覽下方所顯示的擴張後寬度、擴張後高度以及編碼後的檔案大小。如果來源或任何控制項變更,先前的結果會失效,其暫存的下載 URL 也會被撤銷。
  8. 下載 PNG。檔名是從來源衍生而來——例如,名為portrait.png的檔案會下載為portrait-shadow.png

陰影控制項的範圍及其意義

每個控制項都有固定的數值範圍,超出範圍的輸入會在畫布配置之前通過驗證失敗。瀏覽器端的限制符合常見螢幕解析度下 Canvas 陰影渲染可實際接受的範圍,並讓擴張後的畫布維持在網站有界畫布預算之內。

Control Input type Accepted range What it does
Horizontal offset Whole pixels -500 to 500 Positive moves the shadow right, negative moves it left.
Vertical offset Whole pixels -500 to 500 Positive moves the shadow down in the downloaded image, negative moves it up.
Blur radius Whole pixels 0 to 250 Feathers the shadow edge; 0 produces a hard-edged offset copy.
Opacity Whole percent 0 to 100 How solid the shadow pixels render against the canvas.
Shadow color Six-digit hex #000000 to #FFFFFF Tint applied to every shadow pixel before alpha is multiplied by opacity.

這五個輸入都是整數或六位數十六進位,這讓結果可以重現:針對同一個來源重新輸入相同的五個值,總是會產生相同的擴張後尺寸與相同的陰影位置。預覽可能會縮放以符合頁面,但下載的 PNG 會保留由來源與陰影設定計算出的自然輸出解析度。

擴張後畫布大小的計算方式

輸出畫布刻意做得比來源大,以避免陰影在原始矩形邊緣被無聲地裁切。計算方式很明確:畫布的每邊保留兩倍模糊值,並把絕對方向位移加到陰影移動的那一邊。來源與其陰影之外的半透明像素會在 PNG 中保持透明,這正是匯出採用 PNG(而不是 JPG)的原因——超出原始矩形的陰影必須落在透明像素上,而 JPG 沒有 alpha 通道。

從工具的已記載行為所擷取的計算範例:一個 40 乘 20 的來源,搭配 8 像素的向右位移、4 像素的向上位移,以及 6 像素的模糊。

  • 左邊距:2 × 模糊 = 12 像素。
  • 右邊距:2 × 模糊 + 向右位移 = 12 + 8 = 20 像素。
  • 上邊距:2 × 模糊 + 絕對向上位移 = 12 + 4 = 16 像素。
  • 下邊距:2 × 模糊 = 12 像素。

代入尺寸公式:輸出寬度 = 12 + 40 + 20 = 72 像素,輸出高度 = 16 + 20 + 12 = 48 像素。原本的 40 乘 20 影像會依照方向控制項決定的位移,放置在這個較大的 72 乘 48 區域內,讓一般陰影不會在原本的影像邊緣被無聲地裁切。

瀏覽器陰影何時是正確的選擇

這個工具是為直接的光柵陰影所設計,輸入僅限於上述五個控制項。當你需要為產品模型圖、社群圖卡、App Store 截圖、貼圖、簡報縮圖或 UI 素材製作平面陰影,而該陰影屬於裝飾性質而非物理模擬時,它都能乾淨地對應。由於畫布已擴張以容納模糊加上位移,結果可以安全地放到彩色或攝影背景上,而不會在影像邊緣被裁切。

它明確不是設計用來逐位元比對 CSS 的 box-shadowfilter: drop-shadow 宣告。Canvas 的 shadowBlur 是瀏覽器的渲染效果,而不是印刷前製的測量值,因此精確的羽化像素在不同瀏覽器引擎之間可能略有差異。這個工具不會偵測主體、不會分離前景與背景、不會移除背景、不會模擬透視地板陰影,也不會重建攝影棚燈光。如果你的交付物需要上述任何一項,Photoshop 的圖層樣式或 3D 渲染器仍然才是正確的工具。至於其他情況——圍繞一張平面影像的快速裝飾性位移與模糊——本機瀏覽器路徑能以五個整數輸入和一張透明 PNG 下載,產生相同的視覺結果。

本機處理且無上傳

每個步驟都在當前的瀏覽器分頁中完成。來源檔案從本機磁碟讀取、由瀏覽器解碼、以你指定的陰影狀態繪製到 CanvasRenderingContext2D 上、再以無陰影狀態繪製第二次以保持可見的來源像素清晰,然後使用瀏覽器的 canvas toBlob 方法編碼回 PNG。像素從不離開這台機器:沒有上傳步驟、沒有遠端影像服務、沒有登入,也沒有該檔案的暫時性雲端儲存。無效的輸入類型、空檔案、解碼後過大的影像、不可能的輸出尺寸、解碼錯誤、缺少 Canvas 支援,以及 PNG 編碼失敗,每一項都會產生可見的錯誤,而不是損壞的下載。更換來源或任何控制項會讓先前的結果失效,並撤銷暫存的下載 URL,所以在重新渲染之後,無法再下載到舊的影像。

如需更深入的瞭解,請參閱Watermark Multiple Images Locally: One Image at a Time

如需更深入的瞭解,請參閱How to Split GIF Into Frames in Photoshop