• C#图片处理---基础


    简单的图片剪裁

      1 using System;
      2 using System.Drawing;
      3 using System.Drawing.Drawing2D;
      4 using System.IO;
      5 
      6 namespace ClassLibrary
      7 {
      8     /// <summary>
      9     /// 图片处理
     10     /// </summary>
     11     public static class Img
     12     {
     13         #region 图片裁剪
     14         #region 通过文件路径图片 public static Image ImgCutFromFile
     15         /// <summary>
     16         /// 通过文件路径裁剪图片
     17         /// </summary>
     18         /// <param name="imgFile">文件路径</param>
     19         /// <param name="startX">图片左上角X坐标</param>
     20         /// <param name="startY">图片左上角Y坐标</param>
     21         /// <param name="width">截取宽度</param>
     22         /// <param name="height">截取高度</param>
     23         /// <param name="widthS">图片显示宽度</param>
     24         /// <param name="heightS">图片显示高度</param>
     25         /// <returns></returns>
     26         public static Image ImgCutFromFile(string imgFile, int startX, int startY, int width, int height, int widthS = 0, int heightS=0)
     27         {
     28             
     29             Image img = Image.FromFile(imgFile);
     30             if (widthS > 0 && heightS > 0)
     31             {
     32                 GetXYWH(ref startX, ref startY, ref width, ref height, widthS, heightS, img);
     33             }
     34             return ImgCut(img, startX, startY, width, height);
     35         }
     36         #endregion
     37 
     38         #region 通过流图片 public static Image ImgCutFromStream
     39         /// <summary>
     40         /// 通过流图片
     41         /// </summary>
     42         /// <param name="stream"></param>
     43         /// <param name="startX">图片左上角X坐标</param>
     44         /// <param name="startY">图片左上角Y坐标</param>
     45         /// <param name="width">截取宽度</param>
     46         /// <param name="height">截取高度</param>
     47         /// <param name="widthS">图片显示宽度</param>
     48         /// <param name="heightS">图片显示高度</param>
     49         /// <returns></returns>
     50         public static Image ImgCutFromStream(Stream stream, int startX, int startY, int width, int height, int widthS = 0, int heightS = 0)
     51         {
     52             Image img = Image.FromStream(stream);
     53             if (widthS > 0 && heightS > 0)
     54             {
     55                 GetXYWH(ref startX, ref startY, ref width, ref height, widthS, heightS, img);
     56             }
     57             return ImgCut(img, startX, startY, width, height);
     58         }
     59         #endregion
     60 
     61         #region 获取实际XYWH private static void GetXYWH
     62         /// <summary>
     63         /// 获取实际XYWH
     64         /// </summary>
     65         /// <param name="startX">图片左上角X坐标</param>
     66         /// <param name="startY">图片左上角Y坐标</param>
     67         /// <param name="width">截取宽度</param>
     68         /// <param name="height">截取高度</param>
     69         /// <param name="widthS">图片显示宽度</param>
     70         /// <param name="heightS">图片显示高度</param>
     71         /// <param name="img"></param>
     72         private static void GetXYWH(ref int startX, ref int startY, ref int width, ref int height, int widthS, int heightS, Image img)
     73         {
     74             /*img.Width / widthS 是实际图片大小与页面显示图片大小比值*/
     75             startX = Convert.ToInt32(startX * img.Width / widthS);
     76             startY = Convert.ToInt32(startY * img.Height / heightS);
     77             width = Convert.ToInt32(width * img.Width / widthS);
     78             height = Convert.ToInt32(height * img.Height / heightS);
     79         }
     80         #endregion
     81 
     82         #region 执行剪裁 public static Image ImgCut
     83         /// <summary>
     84         /// 图片裁剪
     85         /// </summary>
     86         /// <param name="image">图片</param>
     87         /// <param name="startX">图片左上角X坐标</param>
     88         /// <param name="startY">图片左上角Y坐标</param>
     89         /// <param name="width">截取宽度</param>
     90         /// <param name="height">截取高度</param>
     91         /// <returns></returns>
     92         public static Image ImgCut(Image image, int startX, int startY, int width, int height)
     93         {
     94             Image img = image;//获取原始图片
     95             Image newImg = new Bitmap(width, height);//裁剪后的图片
     96             Graphics g = Graphics.FromImage(newImg);
     97             /*设置质量*/
     98             g.InterpolationMode = InterpolationMode.HighQualityBicubic;
     99             g.SmoothingMode = SmoothingMode.HighQuality;
    100             /*图片源位置,图片源大小*/
    101             Rectangle fromR = new Rectangle(startX, startY, width, height);
    102             /*绘图位置绘图大小*/
    103             Rectangle toR = new Rectangle(0, 0, width, height);
    104             /*画图*/
    105             g.DrawImage(img, toR, fromR, System.Drawing.GraphicsUnit.Pixel);
    106             /*释放截图资源*/
    107             g.Dispose();
    108             return newImg;
    109             //newImg.Save(Server.MapPath(""));
    110             //newImg.Dispose();
    111         }
    112         #endregion
    113         #endregion
    114 
    115         #region 改变图片大小 public static Image ImgSize
    116         /// <summary>
    117         /// 改变图片大小
    118         /// </summary>
    119         /// <param name="image">图片</param>
    120         /// <param name="width">新宽度</param>
    121         /// <param name="height">新高度</param>
    122         /// <returns></returns>
    123         public static Image ImgSize(Image image, int width = 0, int height = 0)
    124         {
    125             Image img = image;//获取原始图片
    126             Image newImg = new Bitmap(width, height);//裁剪后的图片
    127             Graphics g = Graphics.FromImage(newImg);
    128             /*设置质量*/
    129             g.InterpolationMode = InterpolationMode.HighQualityBicubic;
    130             g.SmoothingMode = SmoothingMode.HighQuality;
    131             /*图片源位置,图片源大小*/
    132             Rectangle fromR = new Rectangle(0, 0, img.Width, img.Height);
    133             /*绘图位置绘图大小*/
    134             if (width == 0 && height == 0) {
    135                 width = img.Width;
    136                 height = img.Height;
    137             }
    138             Rectangle toR = new Rectangle(0, 0, width, height);
    139             /*画图*/
    140             g.DrawImage(img, toR, fromR, System.Drawing.GraphicsUnit.Pixel);
    141             /*释放截图资源*/
    142             g.Dispose();
    143             return newImg;
    144         }
    145         #endregion
    146 
    147     }
    148 }
    149 
    150 Img
    View Code
  • 相关阅读:
    Docker三剑客之 Compose
    cloudrea manager 调整datanode数据存储目录
    Docker Dockerfile 定制镜像(转)
    Docker配置mysql互为主从
    Docker构建redis cluster集群
    Kubernetes集群向指定节点上创建容器
    Docker私有仓库registry的搭建及使用
    Docker简介及基本应用
    Kubernetes的UI界面Kubernetes Dashboard的搭建
    java垃圾回收机制
  • 原文地址:https://www.cnblogs.com/liuph/p/4323883.html
Copyright © 2020-2023  润新知