zoukankan      html  css  js  c++  java
  • 水印的代码

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

    代码
    /// <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[] {10000},
                                               
    new float[] {01000},
                                               
    new float[] {00100},
                                               
    new float[] {000, (float)this.LucencyPercent/100f, 0},
                                               
    new float[] {00001}};

                    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),
                        
    00, 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);
                }
  • 相关阅读:
    DWR2.0的DefaultContainer can't find a classes异常的解决方案
    IIS7.5(FastCGI)PHP7安装手记
    android手机一句话备忘录
    设计模式学习每日一记(21.叠代器模式)
    设计模式学习每日一记(20.中介者模式)
    C&C++多系统集成需要注意的问题
    设计模式学习每日一记(23.责任链模式)
    设计模式学习每日一记(22.访问者模式)
    源码阅读工具总结
    zte v880刷机入门篇
  • 原文地址:https://www.cnblogs.com/studio313/p/1695283.html
Copyright © 2011-2022 走看看