1. 程式人生 > >根據URL實現網上抓圖

根據URL實現網上抓圖

一、需要引用的名稱空間

using System.Drawing.Imaging;
using System.Drawing.Drawing2D;

using System;
using System.Drawing;

using System.IO;

#region (27) 根據圖片路徑生成一張新的圖片並儲存
  /// <summary>
  /// 根據圖片路徑生成一張新的圖片並儲存
  /// </summary>
  /// <param name="Url">圖片來源Url</param>
  /// <param name="SavePath">圖片儲存路徑</param>
  /// <param name="NewImgName">新檔名</param>
  public static void MakeNewImg_ByUrl(string Url,string SavePath,string NewImgName)
  {
   System.Uri myUri =new Uri(Url);//建立Uri對像以提供統一資源標符(uri)對像的表示形式和對uri各部的輕鬆訪問
   WebRequest myWebRequest= WebRequest.Create(myUri); //發出對URI的請求
   try
   {
    WebResponse myWebResponse= myWebRequest.GetResponse();//對URI請求作出響應
    Stream str = myWebResponse.GetResponseStream(); //定義位元組序列的一般檢視
    
    Bitmap bmp = new Bitmap(str);
    float single1 = bmp.HorizontalResolution;//獲取Image對像的水平解析度
    float single2 = bmp.VerticalResolution; //獲取Image對像的垂直解析度
    
    Bitmap newbmp = new Bitmap(bmp.Width,bmp.Height,PixelFormat.Format32bppArgb);
    newbmp.SetResolution(single1,single2);
    
    Graphics gp = Graphics.FromImage(newbmp); //建立新的Graphics對像
    gp.Clear(Color.White);//清除整個繪圖面並以指定的背景色填充
    ImageCodecInfo myImageCodecInfo; // 檢索影象編碼器的所有相關資訊
    System.Drawing.Imaging.Encoder myEncoder;
    EncoderParameter myEncoderParameter;//值
    EncoderParameters myEncoderParameters;//陣列
    myImageCodecInfo = GetEncoderInfo("image/jpeg");
    myEncoder = System.Drawing.Imaging.Encoder.Quality;
    myEncoderParameters = new EncoderParameters(1);
    myEncoderParameter = new EncoderParameter(myEncoder, 95L);
    myEncoderParameters.Param[0] = myEncoderParameter;
    //設定高質量插值法
    gp.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
    gp.SmoothingMode = SmoothingMode.HighQuality;//設定圖片質量,指定是否將平滑處理(消除鋸齒)應用於直線、曲線和已填充區域的邊緣
    gp.DrawImage(bmp, 0, 0, bmp.Width,bmp.Height);//重新繪圖
    gp.Dispose();
    //儲存圖片
    newbmp.Save(SavePath+NewImgName, myImageCodecInfo, myEncoderParameters);
    //釋放資源
    bmp.Dispose();
    newbmp.Dispose();
    myWebResponse.Close();
   }
   catch
   {
    alert("生成失敗!");
   }
  }
  
  //檢索影象編碼器的所有相關資訊
  /// <summary>
  /// 檢索指定格式的影象編碼器的所有相關資訊
  /// </summary>
  /// <param name="mimeType">圖片格式型別</param>
  /// <returns>返回影象編碼器的相關資訊</returns>
  private static ImageCodecInfo GetEncoderInfo(String mimeType)
  {
   int j;
   ImageCodecInfo[] encoders;
   encoders = ImageCodecInfo.GetImageEncoders();
   for(j = 0; j < encoders.Length; ++j)
   {
    if(encoders[j].MimeType == mimeType)
     return encoders[j];
   }
   return null;
  }
  #endregion