public abstract class PicUpload  
 19    ...{
 20        /**//// <summary>
 21        /// 类型
 22        /// </summary>
 23        protected readonly string[] availExtension =...{ "jpg","gif","png","jpeg","bmp" };
 24        /**//// <summary>
 25        /// 大小
 26        /// </summary>
 27        protected readonly int size = 1024 * 5 * 1000;
 28        /**//// <summary>
 29        /// 根目录
 30        /// </summary>
 31        protected string RootDir 
 32        ...{
 33            get
 34            ...{
 35                return JuSNS.Config.UiConfig.RootDir;
 36            }
 37        }
 38        private string _server;
 39        /**//// <summary>
 40        /// 要上传到的服务器
 41        /// </summary>
 42        public string server
 43        ...{
 44            get ...{ return _server; }
 45            set ...{ _server = value; }
 46        }
 47        /**//// <summary>
 48        /// 上传的文件
 49        /// </summary>
 50        protected HttpFileCollection hfc;
 51        /**//// <summary>
 52        /// 输出的文件名
 53        /// </summary>
 54        public string OutFileName
 55        ...{
 56            get ...{ return _FileName[_FileName.Length - 1]; }
 57        }
 58        protected int _SuccessNum;
 59        /**//// <summary>
 60        /// 上传成功数量
 61        /// </summary>
 62        public int SuccessNum
 63        ...{
 64            get ...{ return _SuccessNum; }
 65        }
 66        protected int[] _Width;
 67        /**//// <summary>
 68        /// 输出图片的宽度
 69        /// </summary>
 70        public int[] Width
 71        ...{
 72            get ...{ return _Width; }
 73        }
 74        protected int[] _Height;
 75        /**//// <summary>
 76        /// 输出图片的高度
 77        /// </summary>
 78        public int[] Height
 79        ...{
 80            get ...{ return _Height; }
 81        }
 82        /**//// <summary>
 83        /// 输入最后一个图片的高
 84        /// </summary>
 85        public int LastHeight
 86        ...{
 87            get ...{ return _Height[_Height.Length - 1]; }
 88        }
 89        /**//// <summary>
 90        /// 输出最后一个图片的宽
 91        /// </summary>
 92        public int LastWidth
 93        ...{
 94            get ...{ return _Width[_Width.Length - 1]; }
 95        }
 96        protected string[] _FileName;
 97        /**//// <summary>
 98        /// 输出的文件名
 99        /// </summary>
100        public string[] FileName
101        ...{
102            get ...{ return _FileName; }
103        }
104        protected int[] _ContentLength;
105        /**//// <summary>
106        /// 图片内存大小
107        /// </summary>
108        public int[] ContentLength
109        ...{
110            get ...{ return _ContentLength; }
111        }
112        /**//// <summary>
113        /// 最后一个图片内存大小
114        /// </summary>
115        public int LastContentLength
116        ...{
117            get ...{ return _ContentLength[_ContentLength.Length - 1]; }
118        }
119        protected string _errmsg;
120        /**//// <summary>
121        /// 最后一个错误信息
122        /// </summary>
123        protected string errmsg
124        ...{
125            get ...{ return _errmsg; }
126        }
127        public PicUpload(HttpFileCollection hfc)
128        ...{
129            this.hfc = hfc;
130            _Width = new int[1];
131            _Height = new int[1];
132        }
133        public PicUpload()
134        ...{
135            this.hfc = HttpContext.Current.Request.Files;
136        }
137        /**//// <summary>
138        /// 开始上传
139        /// </summary>
140        abstract public void Start();
141        /**//// <summary>
142        /// 生成剪切图
143        /// </summary>
144        /// <param name="data">输入图数据</param>
145        /// <param name="bit">生成的文件</param>
146        /// <param name="x">坐标X</param>
147        /// <param name="y">坐标Y</param>
148        /// <param name="w">宽</param>
149        /// <param name="h">高</param>
150        static public void makeRectImage(byte[] data, out byte[] bit, int x, int y, int w, int h)
151        ...{
152            Bitmap bmp = Bitmap.FromStream(new MemoryStream(data)) as System.Drawing.Bitmap;
153            Rectangle rec = new Rectangle(x, y, w, h);
154            if (bmp.Width < w || bmp.Height < h)
155            ...{
156                int rx, ry, rw, rh;
157                if (bmp.Width > bmp.Height)
158                ...{
159                    rx = (bmp.Width - bmp.Height) / 2;
160                    ry = 0;
161                    rw = bmp.Height;
162                    rh = bmp.Height;
163                    rec = new Rectangle(rx, ry, rw, rh);
164                }
165                else
166                ...{
167                    rx = 0;
168                    ry = (bmp.Height - bmp.Width) / 2;
169                    rw = bmp.Width;
170                    rh = bmp.Width;
171                    rec = new Rectangle(rx, ry, rw, rh);
172                }
173            }
174            Bitmap bmp1 = bmp.Clone(rec, bmp.PixelFormat);
175            MemoryStream ms = new MemoryStream();
176            ImageCodecInfo myImageCodecInfo;
177            System.Drawing.Imaging.Encoder myEncoder;
178            EncoderParameter myEncoderParameter;
179            EncoderParameters myEncoderParameters;
180            myImageCodecInfo = ImageCodecInfo.GetImageEncoders()[0];
181            myEncoder = System.Drawing.Imaging.Encoder.Quality;
182            myEncoderParameters = new EncoderParameters(1);
183            myEncoderParameter = new EncoderParameter(myEncoder, 100L);
184            myEncoderParameters.Param[0] = myEncoderParameter;
185            bmp1.Save(ms, myImageCodecInfo, myEncoderParameters);
186            bit = ms.ToArray();
187            bmp1.Dispose();
188            ms.Dispose();
189        }
190        /**//// <summary>
191        /// 允许的文件类型
192        /// </summary>
193        /// <param name="ext">文件类型</param>
194        /// <returns></returns>
195        protected bool AllowExt(string ext)
196        ...{
197            foreach (string s in availExtension)
198            ...{
199                if (s.ToLower() == ext.ToLower())
200                ...{
201                    return true;
202                }
203            }
204            return false;
205        }
206        /**//// <summary>
207        /// 取得文件扩展名
208        /// </summary>
209        /// <param name="filename">文件名</param>
210        /// <returns></returns>
211        protected string GetExt(string filename)
212        ...{
213            int pos = filename.LastIndexOf(".");
214            return filename.Substring(pos + 1);
215        }
216        /**//// <summary>
217        /// 取得主文件名
218        /// </summary>
219        /// <param name="filename"></param>
220        /// <returns></returns>
221        protected string GetMainName(string filename)
222        ...{
223            int pos = filename.LastIndexOfAny(new char[] ...{ '\\', '/' });
224            int pos1 = 0;
225            int len = pos - pos1;
226            return filename.Substring(pos1 + 1, len);
227        }
228        /**//// <summary>
229        /// 取得新文件名
230        /// </summary>
231        /// <returns></returns>
232        protected string GetNewName()
233        ...{
234            string s = DateTime.Now.ToString("yyyyMMddhhmmss") + Common.Rand.Str(5);
235            return s;
236        }
237        /**//// <summary>
238        /// 上传到远程
239        /// </summary>
240        /// <param name="data"></param>
241        /// <param name="filename"></param>
242        protected int UploadService(byte[] data, string filename)
243        ...{
244            JuSNS.Common.WebService.UploadService upservice = new JuSNS.Common.WebService.UploadService();
245            upservice.Url = server;
246            JuSNS.Common.WebService.MySoapHeader soapheader = new JuSNS.Common.WebService.MySoapHeader();
247            soapheader.Password = PicConfig.SoapPass;
248            upservice.MySoapHeaderValue = soapheader;
249            upservice.SaveFile(data, filename);
250            return 1;
251        }

解决方案 »

  1.   

    下边是继承出来的 
    11    /**//// <summary>
     12    /// 照片上传
     13    /// </summary>
     14    public class PhotoUpload : PicUpload
     15    ...{
     16        public PhotoUpload(HttpFileCollection hfc)
     17            : base(hfc)
     18        ...{
     19            server = PicConfig.PhotoServer;
     20        }
     21        public PhotoUpload()
     22            : base()
     23        ...{
     24            server = PicConfig.PhotoServer;
     25        }
     26
     27        public override void Start()
     28        ...{
     29            string dir=string.Empty;
     30            dir = PicConfig.PhotoRoot;
     31            string path = RootDir + "/" + dir;
     32            path = HttpContext.Current.Server.MapPath(path);
     33            Dictionary<string, PicConfigInfo> pci = PicConfig.Photo;
     34            int j = 0;
     35            for (int i = 0; i < hfc.Count; i++)
     36            ...{
     37               
     38                string fileMainName = GetNewName();
     39                string fileExtName = GetExt(hfc[i].FileName);
     40                string filename = fileMainName + "." + fileExtName;
     41                if (i > 0 && hfc[i].ContentLength == 0)
     42                ...{
     43                    _errmsg = "图片文件太小";
     44                    continue;
     45                }
     46                if (hfc[i].ContentLength > size)
     47                ...{
     48                    _errmsg = "图片文件占用内存超过" + (size / 1000) + "KB";
     49                    continue;
     50                }
     51                if (!AllowExt(fileExtName))
     52                ...{
     53                    _errmsg = "图片格式不正确";
     54                    continue;
     55                }
     56                bool issuc = false;
     57                if (string.IsNullOrEmpty(server) || server == "~")
     58                ...{
     59                    上传for本地#region 上传for本地
     60                    Upload up = new Upload();
     61                    up.PostedFile = hfc[i];
     62                    up.Extension = fileExtName;
     63                    up.FileLength = up.PostedFile.ContentLength;
     64                    up.FileName = filename;
     65                    up.SavePath = path;
     66                    string err = up.UploadStart();
     67                    if (err.IndexOf('$') != -1)
     68                    ...{
     69                        Thumbnail.MakeAllThumbnail(path, filename);
     70                        _SuccessNum++;
     71                        issuc = true;
     72                    }
     73                    #endregion
     74                }
     75                else
     76                ...{
     77                    上传for远程#region 上传for远程
     78                    byte[] data = new byte[hfc[i].ContentLength];
     79                    hfc[i].InputStream.Write(data, 0, hfc[i].ContentLength);
     80                    int n = UploadService(data, RootDir + "/" + dir + "/" + filename);
     81                    foreach (string k in pci.Keys)
     82                    ...{
     83                        if (k != string.Empty)
     84                        ...{
     85                            string tmDir = RootDir + "/" + pci[k].Directory;
     86                            byte[] tmData;
     87                            Thumbnail.CreateThumbnail(data, out tmData, pci[k].X, pci[k].Y);
     88                            UploadService(tmData, tmDir + "/" + filename);
     89                        }
     90                    }
     91                    if (n > 0)
     92                    ...{
     93                        _SuccessNum++;
     94                        issuc = true;
     95                    }
     96                    #endregion
     97                }
     98                if (issuc)
     99                ...{
    100                    Array.Resize<int>(ref _Width, j + 1);
    101                    Array.Resize<int>(ref _Height, j + 1);
    102                    Array.Resize<string>(ref _FileName, j + 1);
    103                    Array.Resize<int>(ref _ContentLength, j + 1);
    104                    System.Drawing.Image image = Bitmap.FromStream(hfc[i].InputStream);
    105                    _Width[j] = image.Width;
    106                    _Height[j] = image.Height;
    107                    _FileName[j] = filename;
    108                    _ContentLength[j] = hfc[i].ContentLength;
    109                    j++;
    110                }
    111            }
    112        }
    113    }现在 这个可以实现图片上传功能 如果要增加个水印功能 该怎么做? 是在父类中加这个功能 还是 子类 
      

  2.   

    感觉这个图片上传功能 和一般做法不太一样 有个demo 功能和这个相似 上传一图片后 生成 3张 加本身
    共四张  
    分别是 原图 缩略图 水印文字 水印图片 
    这个 感觉很难看懂 敬请回复
      

  3.   

    给你个我自己写的,可以按比例缩放,加文字水印和图片水印,有调用方法using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Drawing;
    using System.IO;namespace NewRay.utils
    {
        /// <summary>
        /// MakeThumbnails 的摘要说明
        /// </summary>
        public class MakeThumbnails
        {
            public MakeThumbnails()
            {        }        /// <summary>
            /// 生成缩略图(最终图片固定大小,图片按比例缩小,并为缩略图加上边框,以jpg格式保存)
            /// </summary>
            /// <param name="sourceImg">原图片(物理路径)</param>
            /// <param name="toPath">缩略图存放地址(物理路径,带文件名)</param>
            /// <param name="width">缩略图宽度</param>
            /// <param name="height">缩略图高度</param>
            /// <param name="backColor">如果图片按比例缩小后不能填充满缩略图,则使用此颜色填充(比如"#FFFFFF")</param>
            /// <param name="borderColor">边框颜色(比如"#999999")</param>
            public static int MakePic(string sourceImg, string toPath, int pW, int pH)
            {
                System.Drawing.Image originalImage = null;
                System.Drawing.Image bitmap = null;
                System.Drawing.Graphics g = null;
                try
                {
                    originalImage = System.Drawing.Image.FromFile(sourceImg);
                    int oW = originalImage.Width;//原始图片宽
                    int oH = originalImage.Height;//原始图片高
                    int tW = oW;//最终显示到页面宽
                    int tH = oH;//最终显示到页面高
                    if (oW > pW)//如果原始宽度大于固定宽度
                    {
                        tW = pW;//最终的宽度等于固定的宽度
                        tH = pW * oH / oW;//最终的高度等于固定宽度乘以原始高度除以原始宽度
                        if (tH > pH)
                        {
                            tH = pH;
                            tW = pH * oW / oH;//最终的宽度等于固定高度乘以原始宽度除以原始高度
                        }                }
                    else if (oW < pW)//如果原始宽度小于固定宽度
                    {
                        tW = oW;
                        if (oH > pH)
                        {
                            tH = pH;
                            tW = pH * oW / oH;//最终的宽度等于固定高度乘以原始宽度除以原始高度                
                        }
                    }
                    else//如果原始宽度等于固定宽度
                    {
                        if (oH > pH)
                        {
                            tH = pH;
                            tW = pH * oW / oH;//最终的宽度等于固定高度乘以原始宽度除以原始高度                
                        }
                        if (oH < pH)
                        {
                            tH = oH;
                            tW = pH * oW / oH;//最终的宽度等于固定高度乘以原始宽度除以原始高度                
                        }
                        if (oH == pH)
                        {
                            tH = oH;
                            tW = oW;
                        }
                    }
                    //新建一个bmp图片 
                    bitmap = new System.Drawing.Bitmap(tW, tH);
                    //新建一个画板 
                    g = System.Drawing.Graphics.FromImage(bitmap);
                    //设置高质量插值法
                    g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
                    //设置高质量,低速度呈现平滑程度  
                    g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                    //if (backColor != "")
                    //{
                    //    //清空画布并以指定颜色填充 
                    //    g.Clear(ColorTranslator.FromHtml(backColor));
                    //}
                    //在指定位置并且按指定大小绘制原图片的指定部分 
                    g.DrawImage(originalImage, new System.Drawing.Rectangle(0, 0, tW, tH),
                    new System.Drawing.Rectangle(0, 0, oW, oH),
                    System.Drawing.GraphicsUnit.Pixel);
                    //以jpg格式保存缩略图 
                    bitmap.Save(toPath, System.Drawing.Imaging.ImageFormat.Jpeg);
                    return 1;
                }
                catch
                {
                    return -1;
                }
                finally
                {
                    if (originalImage != null)
                    {                    originalImage.Dispose();
                    }
                    if (bitmap != null)
                    {
                        bitmap.Dispose();
                    }
                    if (g != null)
                    {
                        g.Dispose();
                    }
                }
            }
      

  4.   


            /// <summary>
            /// 生成缩略图(最终图片固定大小,图片按比例缩小,并为缩略图加上边框,以jpg格式保存)
            /// </summary>
            /// <param name="sourceImg">原图片(物理路径)</param>
            /// <param name="toPath">缩略图存放地址(物理路径,带文件名)</param>
            /// <param name="width">缩略图宽度</param>
            /// <param name="height">缩略图高度</param>
            /// <param name="backColor">如果图片按比例缩小后不能填充满缩略图,则使用此颜色填充(比如"#FFFFFF")</param>
            /// <param name="borderColor">边框颜色(比如"#999999")</param>
            public static int MakePicOnlyWidth(string sourceImg, string toPath, int width, string backColor, string borderColor)
            {            //创建一个bitmap类型的bmp变量来读取文件。
                //Bitmap bmp = new Bitmap(openFileDialog1 .FileName );
                ////新建第二个bitmap类型的bmp2变量,我这里是根据我的程序需要设置的。
                //Bitmap bmp2 = new Bitmap(1024, 768, PixelFormat.Format16bppRgb555);
                ////将第一个bmp拷贝到bmp2中
                //Graphics draw = Graphics.FromImage(bmp2);
                //draw.DrawImage(bmp,0,0);
                //pictureBox1.Image = (Image)bmp2 ;//读取bmp2到picturebox
                //FILE = openFileDialog1.FileName;
                //openFileDialog1.Dispose();
                //draw.Dispose();
                //bmp.Dispose();//释放bmp文件资源
                System.Drawing.Image originalImage = null;
                System.Drawing.Image bitmap = null;
                System.Drawing.Graphics g = null;
                try
                {
                    originalImage = System.Drawing.Image.FromFile(sourceImg);
                    //width = originalImage.Width > width ? width : originalImage.Width;
                    //height = originalImage.Height > height ? height : originalImage.Height;
                    int height = originalImage.Height * 80 / originalImage.Width;
                    int towidth = width;
                    int toheight = height;                int x = 0;
                    int y = 0;
                    int ow = originalImage.Width;
                    int oh = originalImage.Height;                string mode;                if (ow < towidth || oh < toheight)
                    {
                        return -1;
                    }
                    else
                    {
                        if (originalImage.Width / originalImage.Height >= width / height)
                        {
                            mode = "W";
                        }
                        else
                        {
                            mode = "H";
                        }
                        switch (mode)
                        {
                            //原始:  宽度:200 高度:100
                            //缩略后:宽度:80 高度:100*80/200=40                        case "W"://指定宽,高按比例 
                                toheight = originalImage.Height * 80 / originalImage.Width;
                                break;
                            case "H"://指定高,宽按比例 
                                towidth = originalImage.Width * height / originalImage.Height;
                                break;
                            default:
                                break;
                        }
                        //新建一个bmp图片 
                        bitmap = new System.Drawing.Bitmap(width, height);                    //新建一个画板 
                        g = System.Drawing.Graphics.FromImage(bitmap);
                        //设置高质量插值法
                        g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;                    //设置高质量,低速度呈现平滑程度  
                        g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;                    if (backColor != "")
                        {
                            //清空画布并以指定颜色填充 
                            g.Clear(ColorTranslator.FromHtml(backColor));
                        }
                        //在指定位置并且按指定大小绘制原图片的指定部分 
                        int top = (height - toheight) / 2;
                        int left = (width - towidth) / 2;
                        g.DrawImage(originalImage, new System.Drawing.Rectangle(left, top, towidth, toheight),
                        new System.Drawing.Rectangle(x, y, ow, oh),
                        System.Drawing.GraphicsUnit.Pixel);                    //Pen pen = new Pen(ColorTranslator.FromHtml(borderColor));
                        // g.DrawRectangle(pen, 0, 0, width - 1, height - 1);
                        //以jpg格式保存缩略图 
                        bitmap.Save(toPath, System.Drawing.Imaging.ImageFormat.Jpeg);
                        return toheight;
                    }
                }
                catch
                {
                    return -1;
                }
                finally
                {
                    if (originalImage != null)
                    {                    originalImage.Dispose();
                    }
                    if (bitmap != null)
                    {
                        bitmap.Dispose();
                    }
                    if (g != null)
                    {
                        g.Dispose();
                    }
                }
            }
            /// <summary>   
            /// 判断是否有图片   
            /// </summary>   
            /// <param name="folderPath">指定文件夹路径</param>   
            /// <returns>bool</returns>   
            public static bool judgeExpensionName(string folderPath)
            {
                bool isTp = false;            if (Directory.Exists(folderPath))
                {
                    foreach (string itemFilePath in Directory.GetFiles(folderPath))
                    {
                        FileInfo fi = new FileInfo(itemFilePath);                    //创建时间    fi.CreationTime;   
                        //获取上次访问当前目录时间 fi.LastAccessTime   
                        //获取上次写入文件目录的时间 fi.LastWriteTime   
                        if (fi.Extension.Equals(".jpg") || fi.Extension.Equals(".JPG") || fi.Extension.Equals(".jpge") || fi.Extension.Equals(".JPEG") || fi.Extension.Equals(".gif") || fi.Extension.Equals(".GIF"))
                        {
                            isTp = true;
                            break;
                        }                    else
                            isTp = false;
                    }
                }            return isTp;
            }
            /// <summary>
            /// 加水印
            /// </summary>
            /// <param name="yuanpath"></param>
            /// <param name="newpath"></param>
            /// <param name="waterimage"></param>
            public static void makewaterimage(string yuanpath, string newpath, string waterimage)
            {
                System.Drawing.Image image = System.Drawing.Image.FromFile(yuanpath);
                System.Drawing.Image copyImage = System.Drawing.Image.FromFile(waterimage);
                Graphics g = Graphics.FromImage(image);
                g.DrawImage(copyImage, new Rectangle(image.Width / 2 - copyImage.Width / 2, image.Height / 2 - copyImage.Height / 2,            copyImage.Width, copyImage.Height), 0, 0, copyImage.Width, copyImage.Height, GraphicsUnit.Pixel);
                g.Dispose();            //保存加水印过后的图片,删除原始图片
                image.Save(newpath);            image.Dispose();            if (File.Exists(yuanpath))
                {
                    File.Delete(yuanpath);
                }
            }    }
    }
    //调用:
    //MakeThumbnails.MakePic(来源路径(绝对),保存路径(绝对), 800(高度), 600(宽度), "#FFFFFF"(可为空), "#999999"(可为空));
      

  5.   

    刚好前天有做过一个得:
            ///**/
            /// <summary>
            /// 在图片上增加文字水印
            /// </summary>
            /// <param name="Path">原服务器图片路径</param>
            /// <param name="Path_sy">生成的带文字水印的图片路径</param>
            protected void AddShuiYinWord(string Path, string Path_sy)
            {            FileStream stream = File.OpenRead(Path);
                System.Drawing.Image original = System.Drawing.Image.FromStream(stream, true);
                stream.Close();
                stream.Dispose();
                stream = null;
                Bitmap image = new Bitmap(original);
                original.Dispose();
                original = null;
                string addText = "http://shop59691092.taobao.com/";        
                System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(image);
                g.DrawImage(image, 0, 0, image.Width, image.Height);
                System.Drawing.Font f = new System.Drawing.Font("Verdana", 16);
                System.Drawing.Brush b = new System.Drawing.SolidBrush(System.Drawing.Color.Blue);           
                g.DrawString(addText, f, b, 15, 15);
                g.Dispose();
                image.Save(Path_sy);
                image.Dispose();
            }
      

  6.   

    简单解释一下:
     g.DrawString(addText, f, b, 15, 15);
    addText:水印文字
    f:字体
    b:颜色
    15 15 是位置坐标
      

  7.   

    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.IO;public partial class _Default : System.Web.UI.Page 
    {
        protected void Page_Load(object sender, EventArgs e)
        {    }
        protected void Button1_Click(object sender, EventArgs e)
        {
            if (FileUpload1.HasFile)
            {
                string fileContentType = FileUpload1.PostedFile.ContentType;
                if (fileContentType == "image/bmp" || fileContentType == "image/gif" || fileContentType == "image/pjpeg")
                {
                    string name = FileUpload1.PostedFile.FileName;                  // 客户端文件路径                FileInfo file = new FileInfo(name);
                    string fileName = file.Name;                                    // 文件名称
                    string fileName_s = "s_" + file.Name;                           // 缩略图文件名称
                    string fileName_sy = "sy_" + file.Name;                         // 水印图文件名称(文字)
                    string fileName_syp = "syp_" + file.Name;                       // 水印图文件名称(图片)
                    string webFilePath = Server.MapPath("file/" + fileName);        // 服务器端文件路径
                    string webFilePath_s = Server.MapPath("file/" + fileName_s);  // 服务器端缩略图路径
                    string webFilePath_sy = Server.MapPath("file/" + fileName_sy); // 服务器端带水印图路径(文字)
                    string webFilePath_syp = Server.MapPath("file/" + fileName_syp); // 服务器端带水印图路径(图片)
                    string webFilePath_sypf = Server.MapPath("file/shuiyin.jpg"); // 服务器端水印图路径(图片)                if (!File.Exists(webFilePath))
                    {
                        try
                        {
                            FileUpload1.SaveAs(webFilePath);                                // 使用 SaveAs 方法保存文件
                            AddShuiYinWord(webFilePath, webFilePath_sy);//文字水印
                            AddShuiYinPic(webFilePath, webFilePath_syp, webFilePath_sypf);//图片水印
                            MakeThumbnail(webFilePath, webFilePath_s, 130, 130, "Cut");     // 生成缩略图方法
                            Label1.Text = "提示:文件“" + fileName + "”成功上传,并生成“" + fileName_s + "”缩略图,文件类型为:" + FileUpload1.PostedFile.ContentType + ",文件大小为:" + FileUpload1.PostedFile.ContentLength + "B";
                        }
                        catch (Exception ex)
                        {
                            Label1.Text = "提示:文件上传失败,失败原因:" + ex.Message;
                        }
                    }
                    else
                    {
                        Label1.Text = "提示:文件已经存在,请重命名后上传";
                    }
                }
                else
                {
                    Label1.Text = "提示:文件类型不符";
                }
            }
        }
        /**/
        /**/
        /**/
        /// <summary>
        /// 生成缩略图
        /// </summary>
        /// <param name="originalImagePath">源图路径(物理路径)</param>
        /// <param name="thumbnailPath">缩略图路径(物理路径)</param>
        /// <param name="width">缩略图宽度</param>
        /// <param name="height">缩略图高度</param>
        /// <param name="mode">生成缩略图的方式</param>    
        public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode)
        {
            System.Drawing.Image originalImage = System.Drawing.Image.FromFile(originalImagePath);        int towidth = width;
            int toheight = height;        int x = 0;
            int y = 0;
            int ow = originalImage.Width;
            int oh = originalImage.Height;        switch (mode)
            {
                case "HW"://指定高宽缩放(可能变形)                
                    break;
                case "W"://指定宽,高按比例                    
                    toheight = originalImage.Height * width / originalImage.Width;
                    break;
                case "H"://指定高,宽按比例
                    towidth = originalImage.Width * height / originalImage.Height;
                    break;
                case "Cut"://指定高宽裁减(不变形)                
                    if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight)
                    {
                        oh = originalImage.Height;
                        ow = originalImage.Height * towidth / toheight;
                        y = 0;
                        x = (originalImage.Width - ow) / 2;
                    }
                    else
                    {
                        ow = originalImage.Width;
                        oh = originalImage.Width * height / towidth;
                        x = 0;
                        y = (originalImage.Height - oh) / 2;
                    }
                    break;
                default:
                    break;
            }        //新建一个bmp图片
            System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth, toheight);        //新建一个画板
            System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);        //设置高质量插值法
            g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;        //设置高质量,低速度呈现平滑程度
            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;        //清空画布并以透明背景色填充
            g.Clear(System.Drawing.Color.Transparent);        //在指定位置并且按指定大小绘制原图片的指定部分
            g.DrawImage(originalImage, new System.Drawing.Rectangle(0, 0, towidth, toheight),
                new System.Drawing.Rectangle(x, y, ow, oh),
                System.Drawing.GraphicsUnit.Pixel);        try
            {
                //以jpg格式保存缩略图
                bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
            }
            catch (System.Exception e)
            {
                throw e;
            }
            finally
            {
                originalImage.Dispose();
                bitmap.Dispose();
                g.Dispose();
            }
        }    /**/
        /**/
        /**/
        /// <summary>
        /// 在图片上增加文字水印
        /// </summary>
        /// <param name="Path">原服务器图片路径</param>
        /// <param name="Path_sy">生成的带文字水印的图片路径</param>
        protected void AddShuiYinWord(string Path, string Path_sy)
        {
            string addText = "测试水印";
            System.Drawing.Image image = System.Drawing.Image.FromFile(Path);
            System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(image);
            g.DrawImage(image, 0, 0, image.Width, image.Height);
            System.Drawing.Font f = new System.Drawing.Font("Verdana", 16);//水印文字大小
            System.Drawing.Brush b = new System.Drawing.SolidBrush(System.Drawing.Color.Blue);//水印文字颜色
            g.DrawString(addText, f, b, image.Width / 2, image.Height / 2);//image.Width / 2, image.Height/2是文字水印在图片的中间位置,此处修改添加入
            //g.DrawString(addText, f, b, 15, 15);//数字是文字水印的位置
            g.Dispose();        image.Save(Path_sy);
            image.Dispose();
        }    /**/
        /**/
        /**/
        /// <summary>
        /// 在图片上生成图片水印
        /// </summary>
        /// <param name="Path">原服务器图片路径</param>
        /// <param name="Path_syp">生成的带图片水印的图片路径</param>
        /// <param name="Path_sypf">水印图片路径</param>
        protected void AddShuiYinPic(string Path, string Path_syp, string Path_sypf)
        {
            System.Drawing.Image image = System.Drawing.Image.FromFile(Path);
            System.Drawing.Image copyImage = System.Drawing.Image.FromFile(Path_sypf);
            System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(image);
            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);
            g.Dispose();        image.Save(Path_syp);
            image.Dispose();
        }}
      

  8.   

    都一样 \(^o^)/~ 我也有这个 http://www.cnblogs.com/e8sp/archive/2010/05/21/1740810.html
    不过我想知道 是我说的那个类 怎么去改实现 水印功能