根据URL实现网上抓图

来源:互联网 发布:jsoup新闻app源码 编辑:程序博客网 时间:2024/06/11 00:15

 

一、需要引用的命名空间

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

原创粉丝点击