根据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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值