添加水印的代码 测试 调试 结果 经过本人亲自测试

时间:2022-02-23 22:25:30

加水印的功能代码如下所示

 

添加水印的代码 测试 调试 结果 经过本人亲自测试添加水印的代码 测试 调试 结果 经过本人亲自测试代码
///   <summary>
    
///  图片修改类,主要是用来保护图片版权的,版权归原作者所有
    
///   </summary>
     public   class  picmark
    {
        
#region  "member fields"
        
private   string  modifyImagePath  =   null ;
        
private   string  drawedImagePath  =   null ;
        
private   int  rightSpace;
        
private   int  bottoamSpace;
        
private   int  lucencyPercent  =   70 ;
        
private   string  outPath  =   null ;
        
#endregion
        
public  picmark()
        {
        }
        
#region  "propertys"
        
///   <summary>
        
///  获取或设置要修改的图像路径
        
///   </summary>
         public   string  ModifyImagePath
        {
            
get  {  return   this .modifyImagePath; }
            
set  {  this .modifyImagePath  =  value; }
        }
        
///   <summary>
        
///  获取或设置在画的图片路径(水印图片)
        
///   </summary>
         public   string  DrawedImagePath
        {
            
get  {  return   this .drawedImagePath; }
            
set  {  this .drawedImagePath  =  value; }
        }
        
///   <summary>
        
///  获取或设置水印在修改图片中的右边距
        
///   </summary>
         public   int  RightSpace
        {
            
get  {  return   this .rightSpace; }
            
set  {  this .rightSpace  =  value; }
        }
        
// 获取或设置水印在修改图片中距底部的高度
         public   int  BottoamSpace
        {
            
get  {  return   this .bottoamSpace; }
            
set  {  this .bottoamSpace  =  value; }
        }
        
///   <summary>
        
///  获取或设置要绘制水印的透明度,注意是原来图片透明度的百分比
        
///   </summary>
         public   int  LucencyPercent
        {
            
get  {  return   this .lucencyPercent; }
            
set
            {
                
if  (value  >=   0   &&  value  <=   100 )
                    
this .lucencyPercent  =  value;
            }
        }
        
///   <summary>
        
///  获取或设置要输出图像的路径
        
///   </summary>
         public   string  OutPath
        {
            
get  {  return   this .outPath; }
            
set  {  this .outPath  =  value; }
        }
        
#endregion
        
#region  "methods"
        
///   <summary>
        
///  开始绘制水印
        
///   </summary>
         public   void  DrawImage()
        {
            Image modifyImage 
=   null ;
            Image drawedImage 
=   null ;
            Graphics g 
=   null ;
            
try
            {
                
// 建立图形对象
                modifyImage  =  Image.FromFile( this .ModifyImagePath);
                drawedImage 
=  Image.FromFile( this .DrawedImagePath);
                g 
=  Graphics.FromImage(modifyImage);
                
// 获取要绘制图形坐标
                 int  x  =  modifyImage.Width  -   this .rightSpace;
                
int  y  =  modifyImage.Height  -   this .BottoamSpace;
                
// 设置颜色矩阵
                 float [][] matrixItems  = {
                                           
new   float [] { 1 0 0 0 0 },
                                           
new   float [] { 0 1 0 0 0 },
                                           
new   float [] { 0 0 1 0 0 },
                                           
new   float [] { 0 0 0 , ( float ) this .LucencyPercent / 100f,  0 },
                                           
new   float [] { 0 0 0 0 1 }};

                ColorMatrix colorMatrix 
=   new  ColorMatrix(matrixItems);
                ImageAttributes imgAttr 
=   new  ImageAttributes();
                imgAttr.SetColorMatrix(colorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);
                
// 绘制阴影图像
                g.DrawImage(
                    drawedImage,
                    
new  Rectangle(x, y, drawedImage.Width, drawedImage.Height),
                    
0 0 , drawedImage.Width, drawedImage.Height,
                    GraphicsUnit.Pixel, imgAttr);
                
// 保存文件
                 string [] allowImageType  =  {  " .jpg " " .gif " " .png " " .bmp " " .tiff " " .wmf " " .ico "  };
                FileInfo file 
=   new  FileInfo( this .ModifyImagePath);
                ImageFormat imageType 
=  ImageFormat.Gif;
                
switch  (file.Extension.ToLower())
                {
                    
case   " .jpg " :
                        imageType 
=  ImageFormat.Jpeg;
                        
break ;
                    
case   " .gif " :
                        imageType 
=  ImageFormat.Gif;
                        
break ;
                    
case   " .png " :
                        imageType 
=  ImageFormat.Png;
                        
break ;
                    
case   " .bmp " :
                        imageType 
=  ImageFormat.Bmp;
                        
break ;
                    
case   " .tif " :
                        imageType 
=  ImageFormat.Tiff;
                        
break ;
                    
case   " .wmf " :
                        imageType 
=  ImageFormat.Wmf;
                        
break ;
                    
case   " .ico " :
                        imageType 
=  ImageFormat.Icon;
                        
break ;
                    
default :
                        
break ;
                }
                MemoryStream ms 
=   new  MemoryStream();
                modifyImage.Save(ms, imageType);
                
byte [] imgData  =  ms.ToArray();
                modifyImage.Dispose();
                drawedImage.Dispose();
                g.Dispose();
                FileStream fs 
=   null ;
                
if  ( this .OutPath  ==   null   ||   this .OutPath  ==   "" )
                {
                    File.Delete(
this .ModifyImagePath);
                    fs 
=   new  FileStream( this .ModifyImagePath, FileMode.Create, FileAccess.Write);
                }
                
else
                {
                    fs 
=   new  FileStream( this .OutPath, FileMode.Create, FileAccess.Write);
                }
                
if  (fs  !=   null )
                {
                    fs.Write(imgData, 
0 , imgData.Length);
                    fs.Close();
                }
            }
            
finally
            {
                
try
                {
                    drawedImage.Dispose();
                    modifyImage.Dispose();
                    g.Dispose();
                }
                
catch  { ;}
            }
        }
        
#endregion
    }

 前台代码如下所示

 

添加水印的代码 测试 调试 结果 经过本人亲自测试添加水印的代码 测试 调试 结果 经过本人亲自测试代码
<% @ Page Language = " C# "  AutoEventWireup = " true "  CodeBehind = " WebForm1.aspx.cs "  Inherits = " demo.WebForm1 "   %>

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >

< html  xmlns ="http://www.w3.org/1999/xhtml"   >
< head  runat ="server" >
    
< title ></ title >
</ head >
< body >
    
< form  id ="form1"  runat ="server" >
    
< div >
    
        
< asp:FileUpload  ID ="FileUpload1"  runat ="server"   />
        
< br  />
        
< asp:Button  ID ="Button1"  runat ="server"  onclick ="Button1_Click"  Text ="Button"   />
    
    
</ div >
    
</ form >
</ body >
</ html >


 cs类的代码如下所示

 

添加水印的代码 测试 调试 结果 经过本人亲自测试添加水印的代码 测试 调试 结果 经过本人亲自测试代码
  protected   void  Button1_Click( object  sender, EventArgs e)
        {
            
string  extension  =  Path.GetExtension( this .FileUpload1.FileName).ToUpper();
            
string  fileName  =  Guid.NewGuid().ToString();
            
string  savePath  =  Server.MapPath( " ../upfile/ "   +  fileName +  extension);
            
if  ( ! Directory.Exists(Path.GetDirectoryName(savePath)))
            {
                Directory.CreateDirectory(Path.GetDirectoryName(savePath));
            }
            
this .FileUpload1.SaveAs(savePath);

          
            
// 实例化类 
            picmark wm  =   new  picmark();

            wm.DrawedImagePath 
=  Server.MapPath( " /upfile/ "   +   " backlogo.gif " )  ;
            wm.ModifyImagePath 
=  savePath;
            wm.RightSpace 
=   145 ;
            wm.BottoamSpace 
= 17 ;
            wm.LucencyPercent 
=   50 ;
            wm.OutPath 
=  Server.MapPath( " /upfile/ "   +  fileName.Replace( " - " , "" ).ToUpper()  +  extension);
            wm.DrawImage();



            
// fileName = "_New_" + fileName;
            
// string sPath = Server.MapPath("../upfile/" + fileName + extension);
            
// this.FileUpload1.SaveAs(sPath);

             
// 保存加水印过后的图片,删除原始图片 
             if  (File.Exists(savePath))
            {
                File.Delete(savePath);
                
// File.Delete(wm.OutPath);
            }