你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:文章管理 / 本期精品文章
上传图片中立体感文字水印的嵌入
 

唐振军 刘国忠

  水印是一种有效的多媒体信息保护技术,本文设计并实现在上传图片中嵌入文字水印信息。通过拷贝指定上载文件到服务器生成临时文件,然后由临时图片文件生成位图和图形对象,设置文字信息,运用两次绘制实现文字立体感显示,最终生成水印图片同时删除临时图片。

关键词 水印,图片,ASP.NET

 

一、前言

   信息技术的迅速发展,使数字媒体内容可以方便快捷地在互联网上发布和传输,与此同时也带来了许多安全隐患。由于信息容易被非法访问、复制和传播,在多媒体应用如付费电视、视频会议、安全传真、医学和军事应用中需要对信息进行保护。目前,对多媒体信息的保护主要采用两种技术:一种是对内容进行加密,另一种是在数字媒体中嵌入水印。本文的内容是关于上传图片的水印嵌入问题,属于第二种技术。ASP.NETMicrosoft公司推出的用于编写动态网页的一项功能强大的新技术,是Microsoft公司动态服务器页面(ASP).NET技术的集合。上传图片是网站开发中最常用的一种功能,因此如何对上传图片进行有效的保护是网站开发者面临的一个问题。通常情况下,可以在上传图片上加入文字信息,注明图片出处或所属,以避免简单的拷贝盗用。应用PhotoshopWindow画板等图像处理软件可以实现上述功能,然而要对每一张上传图片进行此般操作,显得繁琐不便,同时该方法还要求用户熟悉相关软件的使用。本文设计一个基于ASP.NET(C#语言实现)的文字水印嵌入程序。在上传图片的过程中,自动往图片插入文字版权信息,将文字信息置于图像的正中间,通过两次绘制使文字具有立体效果;实现水印信息的全自动嵌入。本文首先分析上传图片嵌入水印信息的基本步骤,见第2部分;然后对实现中用到的一些主要函数进行说明,以便于理解,该内容对应于文中第3部分;第4部分给出了每一个步骤的具体实现的核心代码。

二、基本步骤

    本文设计的网页程序(网页文件名为UpLoadImage.aspx),其上传图片保存的目录与当前网页程序源文件处于同一个目录。程序首先从客户端读取用户选择的图片文件,把该图片文件拷贝到服务器上的目录生成临时图片,拷贝前判断图片大小,大于100kb则不允许上传;由临时图片生成位图和图形对象;然后设置文字的字体、大小等信息;接着通过两次绘制技术将文字信息绘制到图形对象上,使文字获得立体感效果;位图图像存盘成新的图片文件;最后将临时图片删除。具体的步骤概括如下:引入网页所需要使用的命名空间;拷贝图片在服务器生成临时图片文件;由临时图片生成位图及图形对象;设置版权文字的相关信息;绘制立体感文字信息到位图;位图图像存盘成JPEG图像;删除服务器上的临时图片文件。

由于后续的C#代码需要使用表单中的控件,为了便于读者理解,在这里列出网页的<body></body>间的具体代码:

<form id="uploaderform" method="post" action="UpLoadImage.aspx" enctype="multipart/form-data" runat="server">

   <table id="table1"width="80%" border="1" align="center" cellpadding="2" cellspacing="1" >

     <tr> <td height="24" ><div align="left">图片上传</div></td> </tr>

    <tr> <td height="40" align="left">

        <div align="left">选择文件:

   <input name="file" type="file" id="myFile" size="50" runat="server"  >

               <input type="button" value="上传" onServerClick="UpLoad" runat="server">

        </div>

             <asp:label ID="tip" runat="server" Text=""></asp:label>

            </td>

    </tr>   

    <tr> <td height="24" align="middle"><img ID="ImageWM" src=""   runat="server"/> </td> </tr>

</table>

</form>

三、函数说明

    在进行具体实现细节前,对所用到的几个主要函数进行说明,以方便阅读理解。

1.String.Substring(Int32 index)

从字符串实例中检索子字符串,子字符串从指定的字符位置index开始到字符串结尾。返回值是子字符串。

2.HtmlInputFile.PostedFile.SaveAs(string filename)

将客户端指定的上传文件以文件名filename保存到服务器上。

3.System.Drawing.Image.FromFile(string filename)

从指定的文件filename创建Image对象,函数的返回值为Image对象文中用到的Graphics.FromImage(Image image)与此函数有类似的功能,表示从指定的位图对象创建图形对象。

4.Bitmap.SetResolution(float xDpi, float yDpi)

 设置当前Bitmap的分辨率,xDpiBitmap的水平分辨率,yDpiBitmap的垂直分辨率,以每英寸的点数为单位。

5.Graphics.DrawImage(Image image, Rectangle destRect, float  srcX, float srcY, float srcWidth, float srcHeight, GraphicsUnit srcUnit)

在指定位置并且按指定大小绘制指定的Image的指定部分。Image为要绘制的Image对象,destRect为所绘制图像的位置和大小,srcX为要绘制的源图像部分的左上角的 x 坐标,srcY为要绘制的源图像部分的左上角的 y 坐标,srcWidth为要绘制的源图像部分的宽度,srcHeight为要绘制的源图像部分的高度,srcUnitGraphicsUnit 枚举的成员,它指定用于确定源矩形的度量单位。

6.Graphics.MeasureString(string text, Font font)

测量用指定的 Font 绘制的指定字符串,text是要测量的字符串,font定义字符串的文本格式,函数返回SizeF结构变量,表示 text 参数指定的、使用 font 参数绘制的字符串的大小。

7.Graphics.DrawString(string s, Font font, Brush brush, PointF point, StringFormat format)

使用指定 StringFormat的格式化属性,用指定的 Brush Font 对象在指定的位置绘制指定的文本字符串。s 为要绘制的字符串,font定义字符串的文本格式,brush确定所绘制文本的颜色和纹理,point它指定所绘制文本的左上角,format指定应用于所绘制文本的格式化属性(如行距和对齐方式)。

8.Image.Save (string filename)

将该 Image 保存到指定的文件filename

9.File.Delete(string path)

删除指定的文件path。如果指定的文件不存在,则不引发异常。

  推荐精品文章

·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 
·2023年7月目录
·2023年6月目录 
·2023年5月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089