首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

大圖中心裁切生成縮略圖技術方案

     編輯:程式設計綜合問答

需求

後台上傳大圖 (500×600),列表頁顯示 100×100 縮略圖,**不等比縮放**,而是以大圖中心為圓心裁切對應區域。

實現技術

**圖像裁切** 是核心操作,各語言均有成熟庫:

  • Java:BufferedImage.getSubimage(centerX-50, centerY-50, 100, 100) 或 Thumbnailator Thumbnails.of(img).sourceRegion(...).size(100,100).toFile()。
  • Python:Pillow img.crop((left, top, right, bottom))。
  • PHP:GD imagecopyresampled 配合計算源座標,或 Intervention Image Image::make()->crop(100,100)->save()。
  • Node.js:Sharp sharp().extract({left, top, width:100, height:100}).resize(100,100)。
  • .NET: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 區域並輸出

注意

  • 若大圖尺寸小於目標尺寸,需先判斷並改用縮放或填充。
  • 保存時可選擇 JPEG/PNG/WebP 並設置品質。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved