图片上传 并生成水印

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Text;
  5 
  6 namespace MySystemManager.Utility
  7 {
  8   public   class ImageTextAndPicter
  9     {
 10         /// <summary>
 11         /// 生成缩略图
 12         /// </summary>
 13         /// <param name="originalImagePath">源图路径(物理路径)</param>
 14         /// <param name="thumbnailPath">缩略图路径(物理路径)</param>
 15         /// <param name="width">缩略图宽度</param>
 16         /// <param name="height">缩略图高度</param>
 17         /// <param name="mode">生成缩略图的方式</param>    
 18         public  void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode)
 19         {
 20             System.Drawing.Image originalImage = System.Drawing.Image.FromFile(originalImagePath);
 21 
 22             int towidth = width;
 23             int toheight = height;
 24 
 25             int x = 0;
 26             int y = 0;
 27             int ow = originalImage.Width;
 28             int oh = originalImage.Height;
 29 
 30             switch (mode)
 31             {
 32                 case "HW"://指定高宽缩放(可能变形)                
 33                     break;
 34                 case "W"://指定宽,高按比例                    
 35                     toheight = originalImage.Height * width / originalImage.Width;
 36                     break;
 37                 case "H"://指定高,宽按比例
 38                     towidth = originalImage.Width * height / originalImage.Height;
 39                     break;
 40                 case "Cut"://指定高宽裁减(不变形)                
 41                     if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight)
 42                     {
 43                         oh = originalImage.Height;
 44                         ow = originalImage.Height * towidth / toheight;
 45                         y = 0;
 46                         x = (originalImage.Width - ow) / 2;
 47                     }
 48                     else
 49                     {
 50                         ow = originalImage.Width;
 51                         oh = originalImage.Width * height / towidth;
 52                         x = 0;
 53                         y = (originalImage.Height - oh) / 2;
 54                     }
 55                     break;
 56                 default:
 57                     break;
 58             }
 59 
 60             //新建一个bmp图片
 61             System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth, toheight);
 62 
 63             //新建一个画板
 64             System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);
 65 
 66             //设置高质量插值法
 67             g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
 68 
 69             //设置高质量,低速度呈现平滑程度
 70             g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
 71 
 72             //清空画布并以透明背景色填充
 73             g.Clear(System.Drawing.Color.Transparent);
 74 
 75             //在指定位置并且按指定大小绘制原图片的指定部分
 76             g.DrawImage(originalImage, new System.Drawing.Rectangle(0, 0, towidth, toheight),
 77                 new System.Drawing.Rectangle(x, y, ow, oh),
 78                 System.Drawing.GraphicsUnit.Pixel);
 79 
 80             try
 81             {
 82                 //以jpg格式保存缩略图
 83                 bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
 84             }
 85             catch (System.Exception e)
 86             {
 87                 throw e;
 88             }
 89             finally
 90             {
 91                 originalImage.Dispose();
 92                 bitmap.Dispose();
 93                 g.Dispose();
 94             }
 95         }
 96         /// <summary>
 97         /// 在图片上增加文字水印
 98         /// </summary>
 99         /// <param name="Path">原服务器图片路径</param>
100         /// <param name="Path_sy">生成的带文字水印的图片路径</param>
101         /// <param name="addText">文字水印内容</param>
102         public void AddWater(string Path, string Path_sy, string addText)
103         {
104            
105             System.Drawing.Image image = System.Drawing.Image.FromFile(Path);
106             System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(image);
107             g.DrawImage(image, 0, 0, image.Width, image.Height);
108             System.Drawing.Font f = new System.Drawing.Font("Verdana", 20);//字体大小
109             System.Drawing.Brush b = new System.Drawing.SolidBrush(System.Drawing.Color.Green);
110             //位置定位
111             g.DrawString(addText, f, b, 15, 15);
112             g.Dispose();
113 
114             image.Save(Path_sy);
115             image.Dispose();
116         }
117         /// <summary>
118         /// 在图片上生成图片水印
119         /// </summary>
120         /// <param name="Path">原服务器图片路径</param>
121         /// <param name="Path_syp">生成的带图片水印的图片路径</param>
122         /// <param name="Path_sypf">水印图片路径</param>
123         public void AddWaterPic(string Path, string Path_syp, string Path_sypf)
124         {
125             System.Drawing.Image image = System.Drawing.Image.FromFile(Path);
126             System.Drawing.Image copyImage = System.Drawing.Image.FromFile(Path_sypf);
127             System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(image);
128             g.DrawImage(copyImage, new System.Drawing.Rectangle(image.Width - copyImage.Width, image.Height - copyImage.Height, copyImage.Width, copyImage.Height), 0, 0, copyImage.Width, copyImage.Height, System.Drawing.GraphicsUnit.Pixel);
129             g.Dispose();
130 
131             image.Save(Path_syp);
132             image.Dispose();
133         }
134 
135     }
136 }

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。