/// <summary> /// 縮小裁剪圖片 /// </summary> /// <param name="int_Width">要縮小裁剪圖片寬度</param> /// <param name="int_Height">要縮小裁剪圖片長度</param> /// <param name="input_ImgUrl">要處理圖片路徑</param> /// <param name="out_ImgUrl">處理完畢圖片路徑</param> public void ImgReduceCutOut(int int_Width, int int_Height, string input_ImgUrl, string out_ImgUrl) { // ===上傳標準圖大小=== int int_Standard_Width = 160; int int_Standard_Height = 160; int Reduce_Width = 0; // 縮小的寬度 int Reduce_Height = 0; // 縮小的高度 int CutOut_Width = 0; // 裁剪的寬度 int CutOut_Height = 0; // 裁剪的高度 int level = 100; //縮略圖的質量 1-100的范圍 // ===獲得縮小,裁剪大小=== if (int_Standard_Height * int_Width / int_Standard_Width > int_Height) { Reduce_Width = int_Width; Reduce_Height = int_Standard_Height * int_Width / int_Standard_Width; CutOut_Width = int_Width; CutOut_Height = int_Height; } else if (int_Standard_Height * int_Width / int_Standard_Width < int_Height) { Reduce_Width = int_Standard_Width * int_Height / int_Standard_Height; Reduce_Height = int_Height; CutOut_Width = int_Width; CutOut_Height = int_Height; } else { Reduce_Width = int_Width; Reduce_Height = int_Height; CutOut_Width = int_Width; CutOut_Height = int_Height; } // ===通過連接創建Image對象=== System.Drawing.Image oldimage = System.Drawing.Image.FromFile(Server.MapPath(input_ImgUrl)); // ===縮小圖片=== System.Drawing.Image thumbnailImage = oldimage.GetThumbnailImage(Reduce_Width, Reduce_Height, new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback), IntPtr.Zero); Bitmap bm = new Bitmap(thumbnailImage); // ===處理JPG質量的函數=== ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders(); ImageCodecInfo ici = null; foreach (ImageCodecInfo codec in codecs) { if (codec.MimeType == "image/jpeg") ici = codec; } EncoderParameters ep = new EncoderParameters(); ep.Param[0] = new EncoderParameter(Encoder.Quality, (long)level); //bm.Save(Server.MapPath("2.jpg"), ici, ep); // ===裁剪圖片=== Rectangle cloneRect = new Rectangle(0, 0, CutOut_Width, CutOut_Height); PixelFormat format = bm.PixelFormat; Bitmap cloneBitmap = bm.Clone(cloneRect, format); // ===保存圖片=== cloneBitmap.Save(Server.MapPath(out_ImgUrl), ici, ep); }
新聞熱點
疑難解答