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

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);

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,您可以使用C#像处理库来实现这个功能。以下是一个简单的代码示例: ```csharp using System.Drawing; public static void CropIDCard(string originalImagePath, string croppedImagePath) { // 身份证片的宽度和高度 int idCardWidth = 850; int idCardHeight = 540; // 加载原始片 Image originalImage = Image.FromFile(originalImagePath); // 创建一个新的身份证大小的片 Image croppedImage = new Bitmap(idCardWidth, idCardHeight); // 创建一个 Graphics 对象,用于在新片上绘制原始片的一部分 Graphics graphics = Graphics.FromImage(croppedImage); // 定义一个矩形,表示要截取片区域 Rectangle sourceRectangle = new Rectangle(0, 0, idCardWidth, idCardHeight); // 定义一个矩形,表示要绘制的目标区域 Rectangle destinationRectangle = new Rectangle(0, 0, idCardWidth, idCardHeight); // 绘制原始片的一部分到新片上 graphics.DrawImage(originalImage, destinationRectangle, sourceRectangle, GraphicsUnit.Pixel); // 保存新片 croppedImage.Save(croppedImagePath, ImageFormat.Jpeg); // 释放资源 graphics.Dispose(); croppedImage.Dispose(); originalImage.Dispose(); } ``` 在这个示例中,`originalImagePath` 参数是原始片的路径,`croppedImagePath` 参数是要保存的新片的路径。`idCardWidth` 和 `idCardHeight` 变量定义了身份证片应该具有的宽度和高度。您可以根据需要修改这些变量的值。 您可以调用 `CropIDCard` 方法来截取片。例如: ```csharp string originalImagePath = "path/to/original/image.jpg"; string croppedImagePath = "path/to/cropped/image.jpg"; CropIDCard(originalImagePath, croppedImagePath); ``` 这个方法会读取原始片,截取出身份证片的部分,并将结果保存到新片中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值