五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網(wǎng) > 365文章 > 為圖片添加水印

為圖片添加水印

文章來(lái)源:365jz.com     點(diǎn)擊數(shù):551    更新時(shí)間:2009-09-17 10:28   參與評(píng)論
/Files/chengyq/WebApplicationH.rar

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Drawing;
using System.IO;
using System.Text;


namespace WebApplicationH
{
    public abstract class WatermarkPainter : IDisposable
    {
        /// <summary>
        /// 構(gòu)造函數(shù)
        /// </summary>
        /// <param name="rawImagePath"></param>
        /// <param name="alpha"></param>
        /// <param name="replaceRawImage"></param>
        protected WatermarkPainter(string rawImagePath, int alpha, bool replaceRawImage)
        {
            ImageToBePainted = rawImagePath;
            WatermarkAlpha = alpha;
            ReplaceRawImage = replaceRawImage;
        }

        /// <summary>
        /// 構(gòu)造函數(shù)
        /// </summary>
        /// <param name="rawImagePath"></param>
        /// <param name="alpha"></param>
        protected WatermarkPainter(string rawImagePath, int alpha)
            : this(rawImagePath, alpha, true)
        { }

        /// <summary>
        /// 為臨時(shí)存儲(chǔ)文件添加的后綴
        /// </summary>
        private string m_TempFileSuffix = ".juice.watermark.temp";

        /// <summary>
        /// 水印的透明度
        /// </summary>
        private int m_WatermarkAlpha;

        /// <summary>
        /// 水印透明度
        /// </summary>
        public int WatermarkAlpha
        {
            get
            {
                if (m_WatermarkAlpha > 255)
                    m_WatermarkAlpha = 255;
                else if (m_WatermarkAlpha < 0)
                    m_WatermarkAlpha = 0;
                return m_WatermarkAlpha;
            }
            set { m_WatermarkAlpha = value; }
        }

        private string m_ImageToBePainted;

        /// <summary>
        /// 添加水印的圖片的物理路徑
        /// </summary>
        public string ImageToBePainted
        {
            get { return m_ImageToBePainted; }
            set { m_ImageToBePainted = value; }
        }

        private bool m_ReplaceRawImage;

        /// <summary>
        /// 是否用加了水印的圖片替換原有的圖片
        /// </summary>
        public bool ReplaceRawImage
        {
            get { return m_ReplaceRawImage; }
            set { m_ReplaceRawImage = value; }
        }

        private string m_TempImagePath;

        /// <summary>
        /// 加了水印后的臨時(shí)儲(chǔ)存名稱
        /// </summary>
        protected string TempImagePath
        {
            get
            {
                if (string.IsNullOrEmpty(this.m_TempImagePath))
                {
                    StringBuilder s = new StringBuilder(ImageToBePainted);
                    s.Append(this.m_TempFileSuffix);
                    this.m_TempImagePath = s.ToString();
                }
                return m_TempImagePath;
            }
            set { m_TempImagePath = value; }
        }

        /// <summary>
        /// 原始圖像
        /// </summary>
        private Image m_RawImage;

        /// <summary>
        /// 為圖片添加水印
        /// </summary>
        public void PaintWaterMark()
        {
            if (string.IsNullOrEmpty(ImageToBePainted))
                return;
            if (!File.Exists(ImageToBePainted))
                throw new FileNotFoundException(string.Format("file {0} not found.", ImageToBePainted));
            bool succeed;
            if (m_RawImage == null)
                m_RawImage = Image.FromFile(ImageToBePainted);
            ///原始的圖片
            using (Bitmap newImage = new Bitmap(m_RawImage.Width, m_RawImage.Height))
            {
                ///創(chuàng)建繪制圖片的圖面
                using (Graphics g = Graphics.FromImage(newImage))
                {
                    g.DrawImage(m_RawImage, 0, 0, m_RawImage.Width, m_RawImage.Height);
                    ///開始繪制水印
                    succeed = AddWatermark(g, newImage);
                }
                if (succeed)
                    ///將圖片保存到臨時(shí)的文件
                    newImage.Save(TempImagePath);
                if (m_RawImage != null)
                    m_RawImage.Dispose();
            }
            if (succeed && ReplaceRawImage)
            {
                //刪除原來(lái)的文件
                if (File.Exists(ImageToBePainted))
                    File.Delete(ImageToBePainted);
                FileInfo info = new FileInfo(TempImagePath);
                if (info.Exists)
                {
                    info.MoveTo(ImageToBePainted);
                }
            }

        }

        /// <summary>
        /// 添加水印,繼承類可以用來(lái)添加自己的水印
        /// </summary>
        /// <param name="graphics"></param>
        /// <param name="newImage"></param>
        /// <returns></returns>
        protected abstract bool AddWatermark(Graphics graphics, Bitmap newImage);

        #region IDisposable 成員

        public virtual void Dispose()
        {

        }

        #endregion
    }
}




///TextWatermarkPainter類

public class TextWatermarkPainter:WatermarkPainter
    {
        /// <summary>
        /// 構(gòu)造函數(shù)
        /// </summary>
        /// <param name="rawImagePath"></param>
        /// <param name="alpha"></param>
        /// <param name="text"></param>
        public TextWatermarkPainter(string rawImagePath, int alpha, string text)
            : base(rawImagePath, alpha)
        {
            WatermarkText = text;
        }

        private Font m_Font;

        /// <summary>
        /// 水印文字的字體
        /// </summary>
        public Font Font
        {
            get
            {
                if (null == m_Font)
                    m_Font = new Font("Arial Black", 30, FontStyle.Bold, GraphicsUnit.Pixel);
                return m_Font;
            }
            set { m_Font = value; }
        }

        private Color m_FontColor;

        /// <summary>
        /// 字體顏色
        /// </summary>
        public Color FontColor
        {
            get
            {
                if (m_FontColor == null)
                    m_FontColor = Color.DarkSeaGreen;
                return m_FontColor;
            }
            set { m_FontColor = value; }
        }

        private string m_WatermarkText;

        /// <summary>
        /// 水印的文字
        /// </summary>
        public string WatermarkText
        {
            get { return m_WatermarkText; }
            set { m_WatermarkText = value; }
        }

        /// <summary>
        /// 實(shí)現(xiàn)添加水印的方法
        /// </summary>
        /// <param name="graphics"></param>
        /// <param name="newImage"></param>
        /// <returns></returns>
        protected override bool AddWatermark(Graphics graphics, Bitmap newImage)
        {
            if (string.IsNullOrEmpty(WatermarkText))
                return true;
            using (SolidBrush brush = new SolidBrush(Color.FromArgb(WatermarkAlpha, FontColor.R, FontColor.G, FontColor.B)))
            {
                Font font;
                ///添加文字位置
                PointF f = new PointF();
                float totalWidth = Font.Size * WatermarkText.Length;
                f.X = newImage.Width - totalWidth - 100;
                f.Y = newImage.Height - Font.Height;
                if (f.X < 0)
                {
                    ///自動(dòng)調(diào)整字體的大小
                    float width = newImage.Width / WatermarkText.Length;
                    font = new Font(Font.FontFamily, width, GraphicsUnit.Pixel);
                }
                else
                    font = Font;
                graphics.DrawString(WatermarkText, font, brush, f);
            }
            return true;
        }

        #region IDisposable 成員

        public override void Dispose()
        {
            Font.Dispose();
            base.Dispose();
        }

        #endregion
    }


 

using System;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using WebApplicationH;
using System.Web.Hosting;//在托管應(yīng)用程序的應(yīng)用程序域內(nèi)向托管應(yīng)用程序提供應(yīng)用程序管理功能和應(yīng)用程序服務(wù)。無(wú)法繼承此類。


namespace WebApplicationH
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
        protected void uploadFileBtn_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(this.watermarkTextBox.Text))
                return;
            if (FileUpload1.HasFile)
            {
                string contentType = FileUpload1.PostedFile.ContentType;
                if (contentType.StartsWith("image/"))
                {
                    string filePath = Server.MapPath(string.Format("~/{0}", FileUpload1.PostedFile.FileName));
                    ///保存文件
                    FileUpload1.SaveAs(filePath);
                    ///加水印
                    this.AddWatermark(filePath, this.watermarkTextBox.Text);
                    image.ImageUrl = string.Format("~/{0}", FileUpload1.PostedFile.FileName);
                }
            }
        }

        /// <summary>
        /// 添加水印
        /// </summary>
        /// <param name="filePath"></param>
        /// <param name="watermaterText"></param>
        private void AddWatermark(string filePath, string watermaterText)
        {
            using (TextWatermarkPainter painter = new TextWatermarkPainter(filePath, 80, watermaterText))
            {
                painter.FontColor = System.Drawing.Color.DarkGreen;
                painter.PaintWaterMark();
            }

        }
    }
}

 

 

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplicationH._Default" %>

<!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 style="font-family: 宋體, Arial, Helvetica, sans-serif; font-size: small; font-weight: normal; font-style: normal; font-variant: inherit; text-transform: none; color: #3333FF">
        水印文字:&nbsp;&nbsp;&nbsp; <asp:TextBox ID="watermarkTextBox" runat="server"></asp:TextBox><br />
        選擇上傳圖片:<asp:FileUpload ID="FileUpload1" runat="server" Width="189px" />
        <br />
        <asp:Button ID="uploadFileBtn" runat="server" Text="上傳圖片并且加文字水印"
            onclick="uploadFileBtn_Click" Height="21px" Width="148px" />
        <br />加了水印的圖像如下:
        <asp:Image ID="image" runat="server" />
    </div>

    </form>
</body>
</html>



/* ***********************************************
* Author:          1987raymond
* Team:            Juice Sharing
* Created Time:    2009-3-11 13:33:13
* CopyRight:       Juice Sharing 團(tuán)隊(duì)版權(quán)所有 保留一切權(quán)利
* NameSpace:       Juice.Common.Drawing
* Class/Interface: WatermarkPainter
* ***********************************************/

如對(duì)本文有疑問(wèn),請(qǐng)?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會(huì)為你解答??! 點(diǎn)擊進(jìn)入論壇

發(fā)表評(píng)論 (551人查看,0條評(píng)論)
請(qǐng)自覺(jué)遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴(yán)禁發(fā)布色情、暴力、反動(dòng)的言論。
昵稱:
最新評(píng)論
------分隔線----------------------------

其它欄目

· 建站教程
· 365學(xué)習(xí)

業(yè)務(wù)咨詢

· 技術(shù)支持
· 服務(wù)時(shí)間:9:00-18:00
365建站網(wǎng)二維碼

Powered by 365建站網(wǎng) RSS地圖 HTML地圖

copyright © 2013-2024 版權(quán)所有 鄂ICP備17013400號(hào)