a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁(yè) > 編程 > C# > 正文

C#實(shí)現(xiàn)圖片分割方法與代碼

2020-01-24 03:50:19
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
1. 概述
有時(shí)候我們需要在web頁(yè)面上顯示一張圖,比如說(shuō)一張地圖,而這張地圖會(huì)比較大。這時(shí)候如果我們把一張大圖分隔成一組小圖,那么客戶端的顯示速度會(huì)明顯地感覺(jué)塊。希望閱讀本文對(duì)你有所幫助。
2. 實(shí)現(xiàn)思路
.NET Framework GDI+ 為我們提供了一組豐富地類來(lái)編輯圖形圖像。有關(guān).NET Framework GDI+的詳細(xì)資料請(qǐng)查閱msdn相關(guān)文檔。這里只簡(jiǎn)要敘述本程序要用的的幾個(gè)類。
System.Drawing.Image.LoadFile 方法可以從指定的文件創(chuàng)建 Image 對(duì)象。System.Drawing.Image.Save方法可以將此 Image 對(duì)象保存到指定文件。 System.Drawing.Image.Width和System.Drawing.Image.Height屬性可以得到圖片的寬度和高度。
System.Drawing.Graphics類可以編輯圖像。System.Drawing.Graphics.DrawImage方法在指定位置并且按指定大小繪制指定的 Image 對(duì)象的指定部分。
圖片分隔說(shuō)明:就是把一張大圖,按指定的寬度和高度分隔成一組小塊
對(duì)初學(xué)者的提示:在我們讀書時(shí)學(xué)過(guò)的數(shù)學(xué)坐標(biāo)如圖2所示,在GDI+里的坐標(biāo)如圖3所示
3. 實(shí)現(xiàn)代碼
 1public class CropImageManipulator
 2    {
 3        public CropImageManipulator()
 4        {
 5            
 6        }
 7
 8        // 不含擴(kuò)展名的文件名
 9        private string _fileNameWithoutExtension;
10        // 文件擴(kuò)展名
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            // 計(jì)算要分幾格
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    }
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 亚洲一级毛片 | 夜夜av | 成人在线观看免费视频 | 欧美成人精品在线观看 | 亚洲精品国偷拍自产在线观看蜜桃 | 一区二区三区视频在线播放 | 久久久久中文字幕 | 可以免费看黄的网站 | 日韩欧美精品一区 | av三级在线观看 | 99精品视频一区 | 欧美 日韩 国产 一区 | av中文字幕在线播放 | 国产高清毛片 | 国产精品久久久久久亚洲调教 | 欧美日韩综合精品 | 999国内精品永久免费视频 | 一区二区三区精品视频 | 91久色| 久久综合一区二区三区 | 日韩中文字幕免费在线播放 | 久久羞羞| 91精品一区二区三区久久久久久 | 中文字幕一区二区三区免费视频 | 黄色在线免费观看 | 夜夜爆操 | 国产色婷婷| 亚洲久久 | 国产成人精品免费 | 天堂在线视频 | 中文字国产精久久无 | 亚洲一区二区在线 | 久久久久国| 色精品| www.国产| 久久午夜电影 | 国产精品无码专区在线观看 | 国产高清在线精品一区二区三区 | 97国产在线视频 | 伊人网在线视频 | 秋霞国产|