c# 从一个大图里截取图形

本文介绍了一种使用 C# 实现的图片截取方法,该方法通过指定原始图片路径、新图片路径及截取区域来生成新的图片。文章详细展示了如何根据原图尺寸与截取尺寸调整坐标,确保截取部分的有效性,并提供了完整的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public  void  DrawImage(
     Image image,
     Rectangle destRect,
     Rectangle srcRect,
     GraphicsUnit srcUnit
)
public  void  DrawImage(
     Image image,
     int  x,
     int  y,
     Rectangle srcRect,
     GraphicsUnit srcUnit
)

[c-sharp]  view plain copy
  1. #region   截取图象  
  2.   
  3.  ///   <summary>   
  4.  ///   从图片中截取部分生成新图   
  5.  ///   </summary>   
  6.  ///   <param   name= "sFromFilePath "> 原始图片 </param>   
  7.  ///   <param   name= "saveFilePath "> 生成新图 </param>   
  8.  ///   <param   name= "width "> 截取图片宽度 </param>   
  9.  ///   <param   name= "height "> 截取图片高度 </param>   
  10.  ///   <param   name= "spaceX "> 截图图片X坐标 </param>   
  11.  ///   <param   name= "spaceY "> 截取图片Y坐标 </param>   
  12.  public static void CaptureImage(string sFromFilePath, string saveFilePath, int width, int height, int spaceX, int spaceY)  
  13.  {  
  14.      //载入底图   
  15.      Image fromImage = Image.FromFile(sFromFilePath);  
  16.      int x = 0;   //截取X坐标   
  17.      int y = 0;   //截取Y坐标   
  18.      //原图宽与生成图片宽   之差       
  19.      //当小于0(即原图宽小于要生成的图)时,新图宽度为较小者   即原图宽度   X坐标则为0     
  20.      //当大于0(即原图宽大于要生成的图)时,新图宽度为设置值   即width         X坐标则为   sX与spaceX之间较小者   
  21.      //Y方向同理   
  22.      int sX = fromImage.Width - width;  
  23.      int sY = fromImage.Height - height;  
  24.      if (sX > 0)  
  25.      {  
  26.          x = sX > spaceX ? spaceX : sX;  
  27.      }  
  28.      else  
  29.      {  
  30.          width = fromImage.Width;  
  31.      }  
  32.      if (sY > 0)  
  33.      {  
  34.          y = sY > spaceY ? spaceY : sY;  
  35.      }  
  36.      else  
  37.      {  
  38.          height = fromImage.Height;  
  39.      }  
  40.   
  41.      //创建新图位图   
  42.      Bitmap bitmap = new Bitmap(width, height);  
  43.      //创建作图区域   
  44.      Graphics graphic = Graphics.FromImage(bitmap);  
  45.      //截取原图相应区域写入作图区   
  46.      graphic.DrawImage(fromImage, 0, 0, new Rectangle(x, y, width, height), GraphicsUnit.Pixel);  
  47.      //从作图区生成新图   
  48.      Image saveImage = Image.FromHbitmap(bitmap.GetHbitmap());  
  49.      //保存图象   
  50.      saveImage.Save(saveFilePath, ImageFormat.Jpeg);  
  51.      //释放资源   
  52.      saveImage.Dispose();  
  53.      bitmap.Dispose();  
  54.      graphic.Dispose();  
  55.  }  
  56.  #endregion  

 

//调用方法

         CaptureImage(@"D:/1.jpg", @"d:/2.jpg", 50, 50, 300, 300);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值