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 }