麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > C# > 正文

C#實現圖片分割方法與代碼

2020-01-24 03:50:19
字體:
來源:轉載
供稿:網友
1. 概述
有時候我們需要在web頁面上顯示一張圖,比如說一張地圖,而這張地圖會比較大。這時候如果我們把一張大圖分隔成一組小圖,那么客戶端的顯示速度會明顯地感覺塊。希望閱讀本文對你有所幫助。
2. 實現思路
.NET Framework GDI+ 為我們提供了一組豐富地類來編輯圖形圖像。有關.NET Framework GDI+的詳細資料請查閱msdn相關文檔。這里只簡要敘述本程序要用的的幾個類。
System.Drawing.Image.LoadFile 方法可以從指定的文件創建 Image 對象。System.Drawing.Image.Save方法可以將此 Image 對象保存到指定文件。 System.Drawing.Image.Width和System.Drawing.Image.Height屬性可以得到圖片的寬度和高度。
System.Drawing.Graphics類可以編輯圖像。System.Drawing.Graphics.DrawImage方法在指定位置并且按指定大小繪制指定的 Image 對象的指定部分。
圖片分隔說明:就是把一張大圖,按指定的寬度和高度分隔成一組小塊
對初學者的提示:在我們讀書時學過的數學坐標如圖2所示,在GDI+里的坐標如圖3所示
3. 實現代碼
 1public class CropImageManipulator
 2    {
 3        public CropImageManipulator()
 4        {
 5            
 6        }
 7
 8        // 不含擴展名的文件名
 9        private string _fileNameWithoutExtension;
10        // 文件擴展名
11        private string _fileExtension;
12        // 文件所屬的文件夾
13        private string _fileDirectory;
14        public string Cropping(string inputImgPath, int cropWidth, int cropHeight)
15        {
16            this._fileNameWithoutExtension = System.IO.Path.GetFileNameWithoutExtension(inputImgPath);
17            this._fileExtension = System.IO.Path.GetExtension(inputImgPath);
18            this._fileDirectory = System.IO.Path.GetDirectoryName(inputImgPath);
19            
20            // 裝載要分隔的圖片
21            Image inputImg = Image.FromFile(inputImgPath);
22            int imgWidth = inputImg.Width;
23            int imgHeight = inputImg.Height;
24            
25            // 計算要分幾格
26            int widthCount = (int)Math.Ceiling((imgWidth * 1.00) / (cropWidth * 1.00));
27            int heightCount = (int)Math.Ceiling((imgHeight * 1.00) / (cropHeight * 1.00));
28            //----------------------------------------------------------------------
29            ArrayList areaList = new ArrayList();
30            
31            System.Text.StringBuilder sb = new System.Text.StringBuilder();
32            sb.Append("<table cellpadding='0' cellspacing='0' border='[$border]'>");
33            sb.Append(System.Environment.NewLine);
34
35            int i = 0;
36            for (int iHeight = 0; iHeight < heightCount ; iHeight ++)
37            {
38                sb.Append("<tr>");
39                sb.Append(System.Environment.NewLine);
40                for (int iWidth = 0; iWidth < widthCount ; iWidth ++)
41                {
42                    //string fileName = "<img src='http://localhost/SRcommBeijingFile/"  + this._fileNameWithoutExtension + " _" + i.ToString() + this._fileExtension + "'>";
43                    string fileName = string.Format("<img src='http://localhost/SRcommBeijingFile/{0}_{1}{2}'  />",this._fileNameWithoutExtension,i,this._fileExtension);
44                    sb.Append("<td>" + fileName + "</td>");
45                    sb.Append(System.Environment.NewLine);
46
47
48                    int pointX = iWidth * cropWidth;
49                    int pointY = iHeight * cropHeight;
50                    int areaWidth = ((pointX + cropWidth) > imgWidth) ? (imgWidth - pointX) : cropWidth;
51                    int areaHeight = ((pointY + cropHeight) > imgHeight) ? (imgHeight - pointY) : cropHeight;
52                    string s = string.Format("{0};{1};{2};{3}",pointX,pointY,areaWidth,areaHeight);
53                    
54                    Rectangle rect = new Rectangle(pointX,pointY,areaWidth,areaHeight);
55                    areaList.Add(rect);
56                    i ++;
57                }
58                sb.Append("</tr>");
59                sb.Append(System.Environment.NewLine);
60            }
61
62            sb.Append("</table>");
63
64            
65            //----------------------------------------------------------------------    
66            
67            for (int iLoop = 0 ; iLoop < areaList.Count ; iLoop ++)
68            {
69                Rectangle rect = (Rectangle)areaList[iLoop];
70                string fileName = this._fileDirectory + "http://" + this._fileNameWithoutExtension + "_" + iLoop.ToString() + this._fileExtension;
71                Bitmap newBmp = new Bitmap(rect.Width,rect.Height,PixelFormat.Format24bppRgb);
72                Graphics newBmpGraphics = Graphics.FromImage(newBmp);
73                newBmpGraphics.DrawImage(inputImg,new Rectangle(0,0,rect.Width,rect.Height),rect,GraphicsUnit.Pixel);
74                newBmpGraphics.Save();
75                switch (this._fileExtension.ToLower())
76                {
77                    case ".jpg":
78                    case ".jpeg":
79                        newBmp.Save(fileName,ImageFormat.Jpeg);
80                        break;
81                    case "gif":
82                        newBmp.Save(fileName,ImageFormat.Gif);
83                        break;
84                }
85                
86            }
87            inputImg.Dispose();
88            string html = sb.ToString();
89            return html;
90        }
91
92    }
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: asian附近女人裸体pics | 蜜桃精品视频 | 日韩 综合 | freexxxhd喷水 | 91麻豆精品国产91久久久更新资源速度超快 | 黄视频网站免费在线观看 | 国产精品视频六区 | 在线播放免费人成毛片乱码 | 欧美日韩在线视频一区二区 | 午夜精品久久久久久久爽 | 91色综合综合热五月激情 | 欧美日韩1区2区3区 黄片毛片一级 | 久久精品一区二区三 | 久久精品视频12 | av在线不卡免费 | 国产交换3p国产精品 | 91一区二区在线观看 | 亚洲综合视频在线播放 | 久草高清视频 | 久久最新视频 | 爱操av| 黄色一级片在线免费观看 | 羞羞羞网站 | 欧美一级在线看 | 成人做爰s片免费看网站 | 久久精品成人影院 | 国产色视频免费 | 免费国产之a视频 | 久久免费观看一级毛片 | 一本色道精品久久一区二区三区 | 欧美高清一级片 | 有色视频在线观看 | 日本羞羞的午夜电视剧 | 国产九色视频在线观看 | 久久亚洲线观看视频 | 久草视频在线资源 | 午夜小影院 | 精品国产一区二区三区四区在线 | 欧洲狠狠鲁| 亚洲婷婷日日综合婷婷噜噜噜 | 九九精品在线观看视频 |