ToolAct工具行動

圖片裁切工具

線上免費圖片裁切、旋轉與翻轉,精準到像素,全程瀏覽器本地處理不上傳

將圖片拖曳至此,或點擊選擇檔案

支援 JPG、PNG、WebP、BMP、GIF

什麼是圖片裁切?

裁切就是從一張圖片中切出一個矩形區域,把框外的內容全部丟掉。這是最古老的編輯操作之一,因為它改變構圖卻不重新取樣像素——從 4000×3000 的相片裡裁出 1000×800 區域,框內的原始像素一個都不少。本頁面的裁切方式跟桌面編輯器一樣:在預覽圖上拖曳選框、在 X/Y/W/H 輸入欄裡鍵入精確數值、需要符合固定畫布(頭貼、橫幅、證件照)時鎖定比例,最後匯出 PNG/JPEG/WebP。旋轉與翻轉會在裁切之後施加,所以儲存下來的檔案本身就帶著你想要的方向——這對列印與不讀取 EXIF 方向標籤的 app 來說很重要。所有處理都透過 Canvas 在瀏覽器內完成——圖片位元組從不離開頁面,證件與個人相片始終留在你的裝置上。

使用方法

操作步驟

  1. 拖入圖片或點擊選擇,JPG/PNG/WebP/BMP/GIF 都可以。
  2. 拖曳選框移動位置,或抓取四角/四邊的控點調整大小。挑一個比例預設就能鎖定長寬比。
  3. 在 X/Y/W/H 輸入欄微調數值,可實現像素級精確放置。
  4. 可視情況旋轉 90° 或水平/垂直翻轉——這些效果會套用在裁切後的輸出上。
  5. 選擇 PNG、JPEG 或 WebP,點擊「裁切」產生結果後再下載。

小技巧

  • 要用作頭貼或縮圖前先鎖定比例(1:1、16:9 等),不然平台會自作主張幫你重裁,而且不會告訴你。
  • X/Y/W/H 顯示的是原圖像素,不是螢幕像素。4000 像素寬的相片即使縮小顯示,座標仍然按 4000 來報。
  • 相片類建議 JPEG 用 0.85–0.92、WebP 用 0.80–0.90——再高肉眼也分辨不出,只是徒增檔案大小。截圖、線稿或含文字的內容請用 PNG。

使用情境

把頭貼或縮圖裁成固定比例鎖定 1:1 做個人頭貼、16:9 做影片縮圖、4:5 做 Instagram 直式圖,然後把選框拖到臉部或焦點上。因為比例在瀏覽器端就已經鎖死,上傳目標收到的圖正好符合版位——伺服器端的裁圖器再也沒辦法把你的額頭切掉。
回報 Bug 前先把截圖裁乾淨把剪貼簿裡的截圖拖進來,在相關對話框周圍拉一個緊密的框,匯出 PNG 確保文字清晰。把螢幕其他部分丟掉,順便也把當時露出的其他視窗一併遮蔽——比開完整編輯器只為了五秒的裁切快上太多。
把證件、文件相片裁成精確比例許多身分證、護照、簽證的相片規格其實就是一個比例(例如 33×48 mm ≈ 11:16)。在 W/H 中輸入精確的像素寬高、鎖定那個比例,再把框拖到臉部位置。輸出的高品質 JPEG/PNG 直接可以拿去列印,完全不用透過第三方相片沖印服務。
電商商品圖統一尺寸店鋪規範常要求主圖統一為 1:1 或 3:4,但拍攝照片比例參差不齊。鎖定目標比例、把選框拖到產品中心,幾張圖就能批次統一——上傳後台不再觸發自動裁切導致主體偏移。
把社群橫幅與 OG 圖切到平台規格依平台要求的尺寸在 W/H 直接輸入數值(X 頭圖 1500×500、Open Graph 1200×630、Facebook 封面 1640×856、YouTube 縮圖 1280×720、Pinterest Pin 1000×1500、TikTok 封面 1080×1920),設好對應比例後拖選焦點區域。匯出 PNG/WebP 即可直接上傳——不需要模板,不需要 Photoshop。

技術原理

裁切的邏輯很單純——選一個矩形、複製它的像素、把其他全部丟掉——但在瀏覽器裡要做得好,得處理幾個關鍵環節:螢幕上的預覽是原圖的縮放版本、拖曳控點操作的是顯示座標,而真正的裁切必須在原圖座標中進行,才不會損失畫質。 當你載入一個檔案,工具會先用 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)就能避開這個問題。