後台上傳大圖 (500×600),列表頁顯示 100×100 縮略圖,**不等比縮放**,而是以大圖中心為圓心裁切對應區域。
**圖像裁切** 是核心操作,各語言均有成熟庫:
BufferedImage.getSubimage(centerX-50, centerY-50, 100, 100) 或 Thumbnailator Thumbnails.of(img).sourceRegion(...).size(100,100).toFile()。img.crop((left, top, right, bottom))。imagecopyresampled 配合計算源座標,或 Intervention Image Image::make()->crop(100,100)->save()。sharp().extract({left, top, width:100, height:100}).resize(100,100)。Graphics.DrawImage 指定源矩形與目標矩形。srcW = 500; srcH = 600;
dstW = 100; dstH = 100;
cx = srcW / 2; cy = srcH / 2;
srcX = cx - dstW/2; srcY = cy - dstH/2;
// 裁切 srcX, srcY, dstW, dstH 區域並輸出