网上数字画廊实现Word格式.docx
- 文档编号:7795831
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:37
- 大小:120.21KB
网上数字画廊实现Word格式.docx
《网上数字画廊实现Word格式.docx》由会员分享,可在线阅读,更多相关《网上数字画廊实现Word格式.docx(37页珍藏版)》请在冰点文库上搜索。
DigitalWatermarkASP.NET
一、选题意义及背景
网络媒体展示信息面临存储容量、信息结构、信息流通、信息完整性及安全等诸多矛盾,数字化艺术产品的展示及交易因网络的发展而迅速扩展规模,因此面临许多新的问题。
本课题通过构建一个艺术品展示平台,使参与者了解网络、信息流通、网络信息交互、网络信息结构等多媒体信息涉及的各个方面;
通过研究平台及艺术品的安全策略,使参与者逐步进入应用及理论研究的热点问题。
1、网上画廊简介
网上画廊主要是画家作品的藏品、展示和交易的网上平台。
可以说是网上的美术馆访问者在网上画廊点击缩略图可以看到放大图像,并附有文字说明、画家简介、市场行情等等。
并且可以订购作品。
网上画廊除了有一般美术馆展览厅的作用外,它还有自己的特点:
支持海量信息,放置作品数量不是问题;
没有空间距离,能上网就能欣赏作品;
维护费用很低;
还有真实作品很安全,因为网上展示的是其“替身”而已。
当今社会,已经是信息化的时代,网络正在融入到人们的日常生活中,相信网上画廊将有广阔的发展空间。
2、试验语言及简介
ASP本身并不是一种脚本语言,它只是提供了一种使镶嵌在HTML页面中的脚本程序得以运行的环境。
但是,要学好ASP又必须掌握它的语法和规则。
MySQL是一个真正的多用户、多线程SQL数据库服务器。
SQL(结构化查询语言)是世界上最流行的和标准化的数据库语言。
MySQL是以一个客户机/服务器结构的实现,它由一个服务器守护程序mysqld和很多不同的客户程序和库组成。
3.运行环境:
Windows2000/NT+Asp+Apache(IIS6.0)+MySQL或
Windows9x+ASP+PWS(Apache)+MySQL
4.网上画廊的结构设计:
(1)设计思路:
首先确定程序的整体框架,具体可以分为下面3个步骤来完成:
●根据实际需求,确定程序需要完成的整体功能。
并且将这个大功能分解成一些独立的子功能,每个子功能分别由一个模块来实现。
●在各个功能模块都确定之后,需要根据各个模块的需要设计相应的数据库。
设计数据库时要考虑各模块之间的联系,使设计出来的数据库能够反映这种关系。
●实现页面框架过程。
先根据模块,分别实现子页面。
然后分析画廊的工作流程,确定页面之间的连接关系。
在编程过程中,将页面功能和数据库功能分离开,页面功能在前台操作,数据库主要在后台(服务器)工作。
页面主要实现显示功能,数据库主要完成数据操作任务。
而二者并不是互不相干的,页面部分有时也可传递一些重要数据,而数据库也能提供用于具体显示的数据
●最后将网站页面前台和后台跟数据库连接调试,用左右框架型布置页面,这是一种左右为分别两页的框架结构,一般左面是导航链接,有时最上面会有一个小的标题或标致,右面是正文。
我们见到的大部分的大型论坛都是这种结构的,有一些企业网站也喜欢采用。
这种类型结构非常清晰,一目了然。
(2)功能模块设计:
这里所要实现的网上画廊主要包括如下模块:
◆注册/登陆
◆图片浏览
◆购物车模块
◆图画购买
◆作品上传下载
◆数字水印加密
用户注册和用户登录是互相关联的。
首次访问时,用户通过注册成为会员。
注册成功后,在数据库中就存储了用户的一些基本信息,如:
姓名,住址,电话等。
用户在次访问时,如果需要购买图画,就需要先登录。
服务器在用户登录时,先确认其身份,然后就可以向其提供服务了。
根据图画的特点分类显示。
程序中为了简化,图画显示采用统一的格式而且是分级进行。
这样的目的是方便用户查找所需的图画。
添加了订单模块和购物车模块,使用户可以图片浏览时给需要的图片下订单并且在购物车批量购买所需作品。
(3)画廊结构总体设计:
整个网上画廊程序布局不是页面为单位的,而是一功能块为单位的。
建立的文件结构为:
|-登陆-登陆
|-注册
开始|-浏览图片-下订单-登陆-购物车
|-登陆-上传作品
|-数字水印加密
|-下载作品
(4)数据库设计:
选用MySQL建立数据库,并设计所需要的二维表。
5.登陆程序:
(1)用户登录认证:
stringstrconn="
datasource=adir;
initialcatalog=shop;
userid=****;
password=****"
;
dbproviderfactorydbproviderfactory=dbproviderfactories.getfactory
("
system.data.sqlclient"
);
dbconnectiondbconn=dbproviderfactory.createconnection();
//设置连接
dbconn.open();
dbcommanddbcomm=dbproviderfactory.createcommand();
mandtext="
selectuser_psw,user_idfromz_userinfowhereuser_name='
"
+this.tbusername.text+"
'
dbcomm.connection=dbconn
if(this.tbusername.text=="
"
||this.tbpsw.text=="
)
{
this.lblmsg.text="
请输入完整信息"
}
else
dbdatareaderdrreader=dbcomm.executereader();
if(drreader.read())
//设置相应的session信息
Session["
userleve1"
]="
user"
userid"
]=drreader["
user_id"
].tostring();
response.redirect(Request.currentexecutionfilepath);
//页面跳转
密码错误"
没有这个用户"
}
这里注意,在判断用户登录信息正确后的语句中分别有两个Session,其中“Session[“userleve1”]”用来区别该用户的级别,这里分为两个级别,一个是User,表示用户,一个是Admin,表示管理员。
而“Session[“Userid”]”则用来标记该用户。
二、数字水印概述
数字水印(DigitalWatermark)技术是将与多媒体内容相关或不相关的一些标示信息直接嵌入多媒体内容当中,但不影响原内容的使用价值,并不容易被人的知觉系统觉察或注意到。
通过这些隐藏在多媒体内容中的信息,可以达到确认内容创建者、购买者,或者是否真实完整。
数字水印是信息隐藏技术的一个重要研究方向。
加密技术:
利用密钥将明文变换为无意义或其他意思的密文。
信息隐藏:
将机密信息隐藏于公开信息中,通过传递公开信息而传递机密信息。
数字水印:
数字水印是以可感知或不可感知的形式嵌入到数字多媒体产品(文本、音频、视频、图形和图象等)中的、用于版权保护、内容检验或提供其它信息的信号。
数字水印处理技术是水印生成、嵌入、抽取和检测以及攻击等过程的统称
:
2.1数字水印特点
作为数字水印技术基本上具有下面几个方面的特点:
----安全性:
数字水印的信息应是安全的,难以篡改或伪造,同时,应当有较低的误检测率,当原内容发生变化时,数字水印应当发生变化,从而可以检测原始数据的变更;
当然数字水印同样对重复添加有有强的抵抗性
----隐蔽性:
数字水印应是不可知觉的,而且应不影响被保护数据的正常使用;
不会降质;
----鲁棒性:
是指在经历多种无意或有意的信号处理过程后,数字水印仍能保持部分完整性并能被准确鉴别。
可能的信号处理过程包括信道噪声、滤波、数/模与模/数转换、重采样、剪切、位移、尺度变化以及有损压缩编码等。
主要用于版权保护的数字水印易损水印(FragileWatermarking),主要用于完整性保护,这种水印同样是在内容数据中嵌入不可见的信息。
当内容发生改变时,这些水印信息会发生相应的改变,从而可以鉴定原始数据是否被篡改。
----水印容量:
嵌入的水印信息必须足以表示多媒体内容的创建者或所有者的标志信息,或购买者的序列号,这样有利于解决版权纠纷,保护数字产权合法拥有者的利益。
尤其是隐蔽通信领域的特殊性,对水印的容量需求很大.
2.2数字水印原理分析
在一个数字水印处理系统中,一般包含以下几个基本操作,即是水印嵌入,水印检测水印抽取。
下面将对以上各部分内容作出具体分析说明。
按照水印脆弱性
按照水印可视性
根据水印检测过程
按宿主信息类型
按水印嵌入位置划分
鲁棒性水印:
水印不会因宿主变动而轻易被破坏,通常用于版权保护。
脆弱水印:
对宿主信息的修改敏感,用于判断宿主信息是否完整。
2.3按水印的检测过程分类
盲水印:
在水印检测过程中不需要原宿主信息的参与,只用密钥信息即可。
明文水印:
明文水印的水印信息检测必须有原宿主信息的参与。
•明文水印
•
含水印图像
盲抽取算法
抽取的水印
可见水印
2.4数字水印算法
空间域算法:
通过直接对宿主信息作变换来嵌入水印信息的算法。
(最低有效位)
早期的数字水印算法以空域算法为主。
算法通常比较简单,运算量小。
缺点是抵抗攻击的能力往往会比较弱。
变换域算法:
通常首先对宿主信息作特殊变换(DCT,DFT,WF),然后在变换的基础上嵌入信息。
通常比较复杂,运算量大。
但抵抗攻击的能力往往会强一些。
DCT域数字水印算法、小波域数字水印算法
空间域算法举例
Patchwork算法:
首先选中N对像素点,然后通过增加一个点的亮度值,而相应降低另一个点的像素值,以此来嵌入信息。
为了提高水印的鲁棒性,算法将像素对扩展为像素区域对。
对有损的滤波、压缩、扭转等具有较好的抵抗能力。
schyndel算法:
首先将密钥输入到一个M序列发生器,产生水印信号,然后将这些M序列水印信号重新排列成2维水印信息,并按像素点逐一插入到像素值的最低位。
由于水印信号被安排在最低位,因此不易觉察。
但是由于水印的嵌入位置固定,因此水印信息也很容易遭到破坏,鲁棒性不好。
NEC算法
NEC算法:
NEC实验室的COX等人提出的水印算法,原则为:
水印信号应该嵌入源数据中对人的感觉最重要的部分。
在频谱空间中,这种重要部分就是低频分量。
这样,攻击者在破坏水印的过程中,不可避免地会引起图象质量的严重下降。
水印信号应该由具有高斯分布的独立同分布随机实数序列构成。
这使得水印经受多拷贝联合攻击的能力大大增强。
实现方法是:
对整幅图象做DCT变换,选取除DC分量外的1000个最大的DCT系数插入由N(0,1)所产生的一个实数序列水印信号。
2.5程序实现
usingSystem.Drawing;
usingSystem.IO;
usingSystem.Drawing.Imaging;
privatevoidAddWaterMark(stringfileName,stringtext)
{
if(!
File.Exists(MapPath(fileName)))
{
thrownewFileNotFoundException("
Thefiledon'
texist!
}
if(text==string.Empty)
return;
//还需要判断文件类型是否为图像类型,这里就不赘述了
System.Drawing.Imageimage=System.Drawing.Image.FromFile(MapPath(fileName));
Bitmapbitmap=newBitmap(image,image.Width,image.Height);
Graphicsg=Graphics.FromImage(bitmap);
floatfontSize=12.0f;
//字体大小
floattextWidth=text.Length*fontSize;
//文本的长度
//下面定义一个矩形区域,以后在这个矩形里画上白底黑字
floatrectX=0;
floatrectY=0;
floatrectWidth=text.Length*(fontSize+8);
floatrectHeight=fontSize+8;
//声明矩形域
RectangleFtextArea=newRectangleF(rectX,rectY,rectWidth,rectHeight);
Fontfont=newFont("
宋体"
fontSize);
//定义字体
BrushwhiteBrush=newSolidBrush(Color.White);
//白笔刷,画文字用
BrushblackBrush=newSolidBrush(Color.Black);
//黑笔刷,画背景用
g.FillRectangle(blackBrush,rectX,rectY,rectWidth,rectHeight);
g.DrawString(text,font,whiteBrush,textArea);
MemoryStreamms=newMemoryStream();
//保存为Jpg类型
bitmap.Save(ms,ImageFormat.Jpeg);
//输出处理后的图像,这里为了演示方便,我将图片显示在页面中了
Response.Clear();
Response.ContentType="
image/jpeg"
Response.BinaryWrite(ms.ToArray());
g.Dispose();
bitmap.Dispose();
image.Dispose();
}
三上传下载
3.1无组件上传技术
不管是用AspUpload组件还是LyfUpload组件,上传表单文件都是一样的.这也就提醒我们,用户将文件提交到服务器端的时候都是一样的,区别就是服务器端得到数据后,用什么方法来分析得到其中的文件名称,文件大小,文件内容,文件说明等信息.所谓无组件上传,就是要我们自己来手工获取这些信息。
以下将用一个实例来说明:
用户可以选择客户端的文件。
⋯⋯
<
formaction="
upload1.asp"
method="
post"
enctype="
multipart/form-data"
>
选择文件:
inputtype="
file"
name="
upfile"
>
br>
文件说明:
text"
intro"
size="
30"
submit"
value="
确定"
/form>
当用户选择文件并上传后,就将包括文件信息和表单中其它信息在内的所有数据全传送到了服务器端。
剩下的工作就是要利用无组件上传的函数返回相关的信息。
!
--#INCLUDEFILE="
jjUploadFunction1.0.asp"
-->
html>
body>
h3align="
center"
文件上传信息<
/h3>
%
'
调用SaveToFile函数保存文件
DimSaveFlag
SaveFlag=SaveToFile("
Server.MapPath("
upload"
),True)
IfSaveFlag=1Then
DimarrayTemp
arrayTemp=GetFileInfo("
)'
调用GetFileInfo函数
Response.Write"
p>
客户端路径:
&
arrayTemp(0)
文件名称:
arrayTemp
(1)
文件扩展名:
arrayTemp
(2)
文件类型:
arrayTemp(3)
文件大小:
arrayTemp(4)
GetFormInfo("
调用GetFormInfo函数
ahref='
upload/"
arrayTemp
(1)&
target='
_blank'
打开文件<
/a>
ElseifSaveFlag=0Then
发生错误。
ElseifSaveFlag=2Then
该文件已经存在,请修改名称。
Else
根本没有选择文件。
EndIf
%>
ASP无组件上传原理简明教程·
20·
/body>
/html>
程序运行结果如图所示:
上传文件示例结果图
(2)上传多个文件
如果希望一下子上传多个文件,首先要在上传表单中增加多个file标记,如下:
upload2.asp"
选择文件1:
文件说明1:
inputtype=textname="
选择文件2:
upfile2"
文件说明2:
intro2"
然后,在上传执行程序中利用有关函数保存即可。
这里给出上传执行文件:
IfSaveToFile("
),True)=1Then
GetFormInf
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网上 数字 画廊 实现
![提示](https://static.bingdoc.com/images/bang_tan.gif)