首页 > 代码库 > 图片上传 并生成水印

图片上传 并生成水印

  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 }

 

图片上传 并生成水印