• 图像裁切


      1 public class Cutimg
      2     {
      3         /// <summary>
      4         /// 
      5         /// </summary>
      6         /// <param name="pPath">原图地址</param>
      7         /// <param name="filePath">存储图片地址</param>
      8         /// <param name="pPartStartPointX">截取目标-x</param>
      9         /// <param name="pPartStartPointY">截取目标-y</param>
     10         /// <param name="pPartWidth">截取目标-宽度</param>
     11         /// <param name="pPartHeight">截取目标-高度</param>
     12         /// <param name="pOrigStartPointX">缩放图-x:0</param>
     13         /// <param name="pOrigStartPointY">缩放图-y:0</param>
     14         /// <param name="imageWidth">缩放图-宽度</param>
     15         /// <param name="imageHeight">缩放图-高度</param>
     16         /// <returns></returns>
     17         public static bool SaveCutPic(string pPath, string filePath, int pPartStartPointX, int pPartStartPointY, int pPartWidth, int pPartHeight, int pOrigStartPointX, int pOrigStartPointY, int imageWidth, int imageHeight)
     18         {
     19             using (System.Drawing.Image originalImg = System.Drawing.Image.FromFile(pPath))
     20             {
     21                 try
     22                 {
     23                     if (originalImg.Width == imageWidth && originalImg.Height == imageHeight)
     24                     {
     25                         return SaveCutPic(pPath, filePath, pPartStartPointX, pPartStartPointY, pPartWidth, pPartHeight,
     26                                 pOrigStartPointX, pOrigStartPointY);
     27 
     28                     }
     29                     
     30                     Bitmap thumimg = MakeThumbnail(originalImg, imageWidth, imageHeight);
     31 
     32                     Bitmap partImg = new Bitmap(pPartWidth, pPartHeight);
     33                     
     34                     Graphics graphics = Graphics.FromImage(partImg);
     35                     Rectangle destRect = new Rectangle(new Point(pPartStartPointX, pPartStartPointY), new Size(pPartWidth, pPartHeight));//目标位置
     36                     Rectangle origRect = new Rectangle(new Point(pOrigStartPointX, pOrigStartPointY), new Size(pPartWidth, pPartHeight));//原图位置(默认从原图中截取的图片大小等于目标图片的大小)
     37 
     38                     ///文字水印  
     39                     Graphics G = Graphics.FromImage(partImg);
     40                     //Font f = new Font("Lucida Grande", 6);
     41                     //Brush b = new SolidBrush(Color.Gray);
     42                     G.Clear(Color.White);
     43                     // 指定高质量的双三次插值法。执行预筛选以确保高质量的收缩。此模式可产生质量最高的转换图像。 
     44                     G.InterpolationMode = InterpolationMode.HighQualityBicubic;
     45                     // 指定高质量、低速度呈现。 
     46                     G.SmoothingMode = SmoothingMode.HighQuality;
     47 
     48                     graphics.DrawImage(thumimg, destRect, origRect, GraphicsUnit.Pixel);
     49                     //G.DrawString("Xuanye", f, b, 0, 0);
     50                     G.Dispose();
     51 
     52                     originalImg.Dispose();
     53                     if (File.Exists(filePath))
     54                     {
     55                         File.SetAttributes(filePath, FileAttributes.Normal);
     56                         File.Delete(filePath);
     57                     }
     58                     if (!Directory.Exists(Path.GetDirectoryName(filePath)))
     59                     {
     60                         Directory.CreateDirectory(Path.GetDirectoryName(filePath));
     61                         
     62                     }
     63                     partImg.Save(filePath, ImageFormat.Jpeg);
     64 
     65                     partImg.Dispose();
     66                     thumimg.Dispose();
     67                 }
     68                 catch
     69                 {
     70                     return false;
     71                 }
     72                 return true;
     73             }
     74         }
     75 
     76         public static Bitmap MakeThumbnail(System.Drawing.Image fromImg, int width, int height)
     77         {
     78             Bitmap bmp = new Bitmap(width, height);
     79             int ow = fromImg.Width;
     80             int oh = fromImg.Height;
     81 
     82             //新建一个画板
     83             Graphics g = Graphics.FromImage(bmp);
     84 
     85             //设置高质量插值法
     86             g.InterpolationMode = InterpolationMode.High;
     87             //设置高质量,低速度呈现平滑程度
     88             g.SmoothingMode = SmoothingMode.Default;
     89             //清空画布并以透明背景色填充
     90             g.Clear(Color.White);
     91 
     92             g.DrawImage(fromImg, new Rectangle(0, 0, width, height),
     93                 new Rectangle(0, 0, ow, oh),
     94                 GraphicsUnit.Pixel);
     95 
     96             return bmp;
     97 
     98         }
     99 
    100         public static bool SaveCutPic(string pPath, string filePath, int pPartStartPointX, int pPartStartPointY, int pPartWidth, int pPartHeight, int pOrigStartPointX, int pOrigStartPointY)
    101         {
    102             using (System.Drawing.Image originalImg = System.Drawing.Image.FromFile(pPath))
    103             {
    104                 try
    105                 {
    106                     Bitmap partImg = new Bitmap(pPartWidth, pPartHeight);
    107                     Graphics graphics = Graphics.FromImage(partImg);
    108                     Rectangle destRect = new Rectangle(new Point(pPartStartPointX, pPartStartPointY), new Size(pPartWidth, pPartHeight));//目标位置
    109                     Rectangle origRect = new Rectangle(new Point(pOrigStartPointX, pOrigStartPointY), new Size(pPartWidth, pPartHeight));//原图位置(默认从原图中截取的图片大小等于目标图片的大小)
    110 
    111                     ///注释 文字水印  
    112                     Graphics G = Graphics.FromImage(partImg);
    113                     //Font f = new Font("Lucida Grande", 6);
    114                     //Brush b = new SolidBrush(Color.Gray);
    115                     G.Clear(Color.White);
    116                     // 指定高质量的双三次插值法。执行预筛选以确保高质量的收缩。此模式可产生质量最高的转换图像。 
    117                     G.InterpolationMode = InterpolationMode.HighQualityBicubic;
    118                     // 指定高质量、低速度呈现。 
    119                     G.SmoothingMode = SmoothingMode.HighQuality;
    120 
    121                     graphics.DrawImage(originalImg, destRect, origRect, GraphicsUnit.Pixel);
    122                     //G.DrawString("Xuanye", f, b, 0, 0);
    123                     G.Dispose();
    124 
    125                     originalImg.Dispose();
    126                     if (File.Exists(filePath))
    127                     {
    128                         File.SetAttributes(filePath, FileAttributes.Normal);
    129                         File.Delete(filePath);
    130                     }
    131                     partImg.Save(filePath, ImageFormat.Jpeg);
    132                     partImg.Dispose();
    133                 }
    134                 catch
    135                 {
    136                     return false;
    137                 }
    138             }
    139             return true;
    140         }
    141     }
  • 相关阅读:
    Application.Current的使用
    .NET中资源文件的使用
    PMP模拟试题与解析(七)
    PMP模拟试题与解析(四)
    RMAN命令简介
    数据库备份和恢复概述
    ORA-14402: updating partition key column would cause a partition change
    RMAN概述
    PLS-00642: local collection types not allowed in SQL statements
    SFTP(Secure File Transfer Protocol)安全的文件传输协议的使用
  • 原文地址:https://www.cnblogs.com/linzhao126/p/3492817.html
Copyright © 2020-2023  润新知