圖片裁切工具
線上免費圖片裁切、旋轉與翻轉,精準到像素,全程瀏覽器本地處理不上傳
將圖片拖曳至此,或點擊選擇檔案
支援 JPG、PNG、WebP、BMP、GIF
什麼是圖片裁切?
裁切就是從一張圖片中切出一個矩形區域,把框外的內容全部丟掉。這是最古老的編輯操作之一,因為它改變構圖卻不重新取樣像素——從 4000×3000 的相片裡裁出 1000×800 區域,框內的原始像素一個都不少。本頁面的裁切方式跟桌面編輯器一樣:在預覽圖上拖曳選框、在 X/Y/W/H 輸入欄裡鍵入精確數值、需要符合固定畫布(頭貼、橫幅、證件照)時鎖定比例,最後匯出 PNG/JPEG/WebP。旋轉與翻轉會在裁切之後施加,所以儲存下來的檔案本身就帶著你想要的方向——這對列印與不讀取 EXIF 方向標籤的 app 來說很重要。所有處理都透過 Canvas 在瀏覽器內完成——圖片位元組從不離開頁面,證件與個人相片始終留在你的裝置上。
使用方法
操作步驟
- 拖入圖片或點擊選擇,JPG/PNG/WebP/BMP/GIF 都可以。
- 拖曳選框移動位置,或抓取四角/四邊的控點調整大小。挑一個比例預設就能鎖定長寬比。
- 在 X/Y/W/H 輸入欄微調數值,可實現像素級精確放置。
- 可視情況旋轉 90° 或水平/垂直翻轉——這些效果會套用在裁切後的輸出上。
- 選擇 PNG、JPEG 或 WebP,點擊「裁切」產生結果後再下載。
小技巧
- 要用作頭貼或縮圖前先鎖定比例(1:1、16:9 等),不然平台會自作主張幫你重裁,而且不會告訴你。
- X/Y/W/H 顯示的是原圖像素,不是螢幕像素。4000 像素寬的相片即使縮小顯示,座標仍然按 4000 來報。
- 相片類建議 JPEG 用 0.85–0.92、WebP 用 0.80–0.90——再高肉眼也分辨不出,只是徒增檔案大小。截圖、線稿或含文字的內容請用 PNG。
使用情境
技術原理
裁切的邏輯很單純——選一個矩形、複製它的像素、把其他全部丟掉——但在瀏覽器裡要做得好,得處理幾個關鍵環節:螢幕上的預覽是原圖的縮放版本、拖曳控點操作的是顯示座標,而真正的裁切必須在原圖座標中進行,才不會損失畫質。 當你載入一個檔案,工具會先用 URL.createObjectURL() 拿到 blob URL,再交給 HTMLImageElement 解碼(零拷貝,比 base64 data URL 省記憶體)。img.naturalWidth 與 naturalHeight 成為標準座標系——state 裡存的所有 X/Y/W/H 都以這些像素表示。預覽用的 <img> 透過 max-width/max-height 讓瀏覽器自動縮放;每次載入和 resize 時用 getBoundingClientRect() 量出實際渲染寬,並存下 displayScale 比例(渲染寬/自然寬)。拖曳期間的滑鼠位移除以這個比例,就能把顯示端的動作換算回原圖像素——不論圖片在螢幕上被縮小到什麼程度,裁切矩形始終精準。 裁切框本身是疊在圖片上的絕對定位 <div>。8 個縮放控點(四角 + 四邊)各自在 pointerdown 時帶上一個模式('nw'、'n'、'ne'、'e'、'se'、's'、'sw'、'w'、'move');window 上的 pointermove 監聽(pointer events 同時覆蓋滑鼠和觸控)器讀取即時滑鼠位置、計算與拖曳起點的差值、轉成原圖像素後重新算出矩形的 left/top/right/bottom。角點拖曳以對角為錨點;邊拖曳則保持垂直中軸不動;鎖比例的拖曳先算主導軸再反推另一軸。每次結果都會被夾在圖片範圍內、最小邊長 10 px,防止矩形反轉或飛出畫布。 匯出階段會用兩個離螢幕的 canvas。第一個 canvas 尺寸設為裁切區域的自然寬高;ctx.drawImage(img, sx, sy, sw, sh, 0, 0, sw, sh) 用 9 參數形式只取出裁切區域——Chromium 與 Firefox 都會透過 GPU 紋理拷貝完成,只要目標尺寸沒變就不會重新取樣。如果需要旋轉或翻轉,第二個 canvas 會按旋轉後的尺寸建立(90°/270° 時寬高互換),context 平移到中心、ctx.rotate(angle) 與 ctx.scale(±1, ±1) 施加變換,再把裁切後的 canvas 以 (-w/2, -h/2) 為偏移繪上去。最後 canvas.toBlob(mimeType, quality) 把編碼後的位元組以 Blob 回傳;URL.createObjectURL() 把它變成可下載的 URL。PNG 無視 quality(無損),JPEG 與 WebP 則把 quality 當成編碼器提示(0–1)。新的裁切產生時會 revokeObjectURL 舊的 Blob URL,避免已解碼的像素資料一直留在記憶體裡。
- 裁切座標(X/Y/W/H)基於原圖像素——一張 4000 像素寬的照片即使螢幕上縮小顯示,座標仍然按 4000 計算。
- 所有處理透過 Canvas API 在瀏覽器本機完成——解碼、裁切、旋轉、翻轉和編碼都不會將圖片位元組傳送到任何伺服器。
- 裁切框是一個絕對定位的 <div>,帶 8 個拖曳手柄;滑鼠/觸控偏移量除以顯示比例,轉換回原始像素座標。
- 匯出使用離屏 Canvas:第一個 Canvas 透過 drawImage 九參數形式只提取裁切區域(不重新取樣),第二個 Canvas 透過 context 變換施加旋轉/翻轉。
- 每次狀態轉換時明確釋放舊的 Blob URL,避免已解碼的像素資料在記憶體中堆積。
範例
從人像相片裁出方形頭貼
載入相片(3024×4032)→ 比例 1:1 → 拖框覆蓋臉部 → W=2000 H=2000 → 格式 JPEG、品質 0.9 → 裁切 → 下載Open Graph 圖片(1200×630)
載入橫幅(1920×1080)→ 比例 16:9 → 輸入 W=1200 H=630 → 拖到主體 → 格式 WebP、品質 0.85 → 裁切 → 下載YouTube 影片縮圖 1280×720
載入素材 → 比例 16:9 → W=1280 H=720 → 拖到焦點 → JPEG 品質 0.9 → 裁切 → 下載把相機拍的直幅照轉正
載入 IMG_4321.jpg → 向右旋轉 90° → 比例自由 → 保留整張畫布 → 格式 PNG → 裁切 → 下載(方向已寫進像素)裁出截圖中的某塊區域
貼上/上傳截圖 → 比例自由 → 緊框住對話框(例如 740×420)→ 格式 PNG → 裁切 → 下載用於 Bug 回報常見問題
我的圖片會被上傳到任何地方嗎?
不會。解碼、裁切、旋轉、編碼全部都在這個分頁的 Canvas API 裡執行。你可以在 DevTools → Network 確認:裁切或下載期間沒有任何請求發出。
裁切會降低圖片品質嗎?
裁切本身是無損的——只丟掉框外的像素,框內的像素逐位元組保留。只有兩種情況會改變品質:以低於 100% 的品質重新編碼為 JPEG 或 WebP,或者施加 90/180/270 以外角度的旋轉(所以我們只提供這三種角度)。
線上裁切和 Photoshop、Lightroom 有什麼區別?
桌面軟體功能更全面(圖層、調色、批次處理、自動選取),但啟動慢、要付費、要在地安裝。線上工具的好處是打開瀏覽器就能用,免安裝免登入,只裁一兩張圖通常比啟動 Photoshop 更快。只要裁一張圖、鎖個比例、做個頭像,線上工具更合適;要做大量批次或複雜修圖再上 PS。
和手機相簿內建的裁切相比呢?
手機相簿裁切方便但受限:通常只能選幾個固定比例、不能輸入精確像素、改不了輸出格式、檔案名固定。當你需要把照片裁到 1200×630 這種具體尺寸,或要把 HEIC 轉 JPG 順便裁,相簿做不到,而本工具可以。
為什麼 X/Y/W/H 的數值跟我在螢幕上看到的不一樣?
這些數值是圖片的原始像素,不是螢幕像素。一張 4000 像素的相片在 800 px 寬下顯示時,座標仍然可以報到 4000——這才是你的編輯器或上傳目標實際收到的解析度。
匯出的圖片有浮水印嗎?
沒有。本工具完全免費,無浮水印、無登入、無次數限制。裁切結果上不會加入任何 logo 或連結。
為什麼原圖比 1242×2208 還小時,我沒辦法裁到那麼大?
裁切框不能比圖片本身還大——如果你需要更大的輸出,得先單獨做放大(upscale)。我們不在裁切過程中放大,因為最近鄰/雙線性放大會讓結果模糊,好的放大演算法應該放在專用工具裡。
可以鎖定預設清單裡沒有的自訂比例嗎?
把比例設為自由,然後在 W 與 H 的數字欄位輸入你想要的精確寬高——結果的比例就是這兩個數字決定的。也可以把 W/H 當計算機用,例如 1080 / 1350 = 0.8 = 4:5。
可以一次裁切多張圖片嗎?
目前不支援批次。本工具為單張圖的準確裁切而設計;需要批次處理同一比例的多張圖,可以使用命令列工具(如 ImageMagick)或專業批次編輯器。
這裡的旋轉跟我手機相片裡的 EXIF 方向有什麼不同?
EXIF 方向是一個 metadata 旗標——尊重它的 app 會在顯示時把圖旋轉過去,但檔案的像素仍然停留在原本的方向。在這裡旋轉是真的把像素重新算過一遍,所以匯出的檔案在任何檢視器裡都正確,包括印表機和不理會 EXIF 的 app。
我該匯出 PNG、JPEG 還是 WebP?
截圖、UI 模擬圖,以及含有文字或銳利邊緣的內容用 PNG(無損,檔案較大)。要拿去印刷或比起透明度更重視檔案大小的相片用 JPEG。WebP 在同樣視覺品質下比 JPEG 小 25–35%,而且支援透明——目標使用者用現代瀏覽器時優先選它。
為什麼裁切後檔案大小反而變大了?
如果原始檔本來就是高壓縮的 JPEG,而你以 PNG 匯出,無損重新編碼自然會變大。維持原本的格式(或改用 WebP)就能避開這個問題。