C\#그림 분할 방법 과 코드 실현

1. 요약 할 때 우 리 는 웹 페이지 에 그림 을 표시 해 야 한다.예 를 들 어 지도 한 장,이 지 도 는 비교적 크다.이때 만약 에 우리 가 큰 그림 을 작은 그림 으로 나 누 면 클 라 이언 트 의 표시 속 도 는 블록 을 뚜렷하게 느 낄 것 이다.본문 을 읽 는 것 이 당신 에 게 도움 이 되 기 를 바 랍 니 다.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 과 같 습 니 다. 구현 코드 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            // 몇 칸 으로 나 눌 지 계산 하 다            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(""); 33            sb.Append(System.Environment.NewLine); 34 35            int i = 0; 36            for (int iHeight = 0; iHeight < heightCount ; iHeight ++) 37            { 38                sb.Append(""); 39                sb.Append(System.Environment.NewLine); 40                for (int iWidth = 0; iWidth < widthCount ; iWidth ++) 41                { 42                    //string fileName = ""; 43                    string fileName = string.Format("",this._fileNameWithoutExtension,i,this._fileExtension); 44                    sb.Append("" + fileName + ""); 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(""); 59                sb.Append(System.Environment.NewLine); 60            } 61 62            sb.Append(""); 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 + "\\" + 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    }

좋은 웹페이지 즐겨찾기