见源码: using System; using System.Configuration; using System.Data; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Collections; using System.Drawing; using System.Drawing.Imaging; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string sPath = Server.MapPath("~/images/i.gif"); //将被切割的图 string html = Cropping(sPath, 256, 192); //原图大小为1024*768,这里我分割为3X3分 Response.Write(html); } private string _fileNameWithoutExtension; //文件扩展名 private string _fileExtension; // 文件所属的文件夹 private string _fileDirectory; /// <summary> /// 切割图片手 /// </summary> /// <param name="inputImgPath">要分割图片的路径</param> /// <param name="cropWidth">每个小图的宽度</param> /// <param name="cropHeight">每个小图的高度</param> /// <returns>string:table</returns> public string Cropping(string inputImgPath, int cropWidth, int cropHeight) { this._fileNameWithoutExtension = System.IO.Path.GetFileNameWithoutExtension(inputImgPath); this._fileExtension = System.IO.Path.GetExtension(inputImgPath); this._fileDirectory = System.IO.Path.GetDirectoryName(inputImgPath); // 装载要分隔的图片 System.Drawing.Image inputImg = System.Drawing.Image.FromFile(inputImgPath); int imgWidth = inputImg.Width; int imgHeight = inputImg.Height; // 计算要分几格 int widthCount = (int)Math.Ceiling((imgWidth * 1.00) / (cropWidth * 1.00)); int heightCount = (int)Math.Ceiling((imgHeight * 1.00) / (cropHeight * 1.00)); //------------------------------------------------------------------- ArrayList areaList = new ArrayList(); System.Text.StringBuilder sb = new System.Text.StringBuilder(); sb.Append("<table cellpadding='0' cellspacing='0' border='0'>"); sb.Append(System.Environment.NewLine); int i = 0; for (int iHeight = 0; iHeight < heightCount; iHeight++) { sb.Append("<tr>"); sb.Append(System.Environment.NewLine); for (int iWidth = 0; iWidth < widthCount; iWidth++) { //string fileName = "<img src="http://localhost/SRcommBeijingFile/" + this._fileNameWithoutExtension + " _" + i.ToString() + this._fileExtension + "" mce_src="http://localhost/SRcommBeijingFile/" + this._fileNameWithoutExtension + " _" + i.ToString() + this._fileExtension + "">"; string fileName = string.Format("<img src="images/{0}_{1}{2}" mce_src="images/{0}_{1}{2}" alt='' />", this._fileNameWithoutExtension, i, this._fileExtension); sb.Append("<td>" + fileName + "</td>"); sb.Append(System.Environment.NewLine); int pointX = iWidth * cropWidth; int pointY = iHeight * cropHeight; int areaWidth = ((pointX + cropWidth) > imgWidth) ? (imgWidth - pointX) : cropWidth; int areaHeight = ((pointY + cropHeight) > imgHeight) ? (imgHeight - pointY) : cropHeight; string s = string.Format("{0};{1};{2};{3}", pointX, pointY, areaWidth, areaHeight); Rectangle rect = new Rectangle(pointX, pointY, areaWidth, areaHeight); areaList.Add(rect); i++; } sb.Append("</tr>"); sb.Append(System.Environment.NewLine); } sb.Append("</table>"); //---------------------------------------------------------------------- for (int iLoop = 0; iLoop < areaList.Count; iLoop++) { Rectangle rect = (Rectangle)areaList[iLoop]; string fileName = this._fileDirectory + "//" + this._fileNameWithoutExtension + "_" + iLoop.ToString() + this._fileExtension; Bitmap newBmp = new Bitmap(rect.Width, rect.Height, PixelFormat.Format24bppRgb); Graphics newBmpGraphics = Graphics.FromImage(newBmp); newBmpGraphics.DrawImage(inputImg, new Rectangle(0, 0, rect.Width, rect.Height), rect, GraphicsUnit.Pixel); newBmpGraphics.Save(); switch (this._fileExtension.ToLower()) { case ".jpg": case ".jpeg": newBmp.Save(fileName, ImageFormat.Jpeg); break; case ".gif": newBmp.Save(fileName, ImageFormat.Gif); break; } } inputImg.Dispose(); string html = sb.ToString(); return html; } }