收藏 分销(赏)

数字图像可视水印软件设计.doc

上传人:仙人****88 文档编号:9344404 上传时间:2025-03-22 格式:DOC 页数:35 大小:1.60MB
下载 相关 举报
数字图像可视水印软件设计.doc_第1页
第1页 / 共35页
数字图像可视水印软件设计.doc_第2页
第2页 / 共35页
点击查看更多>>
资源描述
摘要 在网络高速发展的今天,人们时常会利用网络来分享图像文件,此时,由于网络的可复制性便产生了图像版权问题。为解决这个问题,市场上引进了水印的概念,也产生了很多水印添加的软件,如Photoshop、轻松水印等。但是,现有的软件要么操作太复杂,要么需要收费。因此,数字图像可视水印软件的开发便很是需要了。该软件在Visual Studio2008环境下结合数字图像处理技术、数字水印原理和GDI+绘画技术设计完成,可为用户提供文字型水印、图像型水印和个性化涂鸦型水印的功能,并支持批量处理、模板设置和预览功能。随着时代的发展,数字化可视水印的应用面越来越广,因此,此类软件有着十分广阔的应用前景。 关键词:数字媒体,数字图像处理,可视水印,.NET平台,透明度 ABSTRACT The rapid development of the network today, people often will use the network to share image files, meanwhile, as the network reproducibility,generated the image copyright issues. To address this problem, the market brings in the concept of watermarks, also produced a lot of adding watermark’s software such as Photoshop, Easy Watermarks. However, the existing softwares are operating too complex or required fees. Therefore, visual watermark software of digital image development is a necessary. The software in Visual Studio 2008 environment combined with digital image processing, digital watermarking principles and GDI + painting technology design is completed, can provide users with text-based watermarking, image-based watermarks and personalized graffiti-type watermark, and supports batch processing, the template set and preview function. With the development of digital video watermarking applications become an increasingly widespread, so that such software has a very broad application prospects. Keywords: Digital media, Digital image processing, Visible watermark, . NET platform, Transparency 目录 摘要 I ABSTRACT II 目录 III 第1章 引言 1 1.1 背景 1 1.2 研究内容及拟解决问题 2 1.3 应用前景 3 第2章 工具软件与技术基础 6 2.1 开发环境和工具 6 2.2 技术路线 6 2.2.1 数字化可视水印制作原理 6 2.2.2 GDI+ 7 2.2.3 Bitmap类 7 2.2.4 XML 7 第3章 软件总体设计 8 3.1 软件需求分析 8 3.1.1 开发目标 8 3.1.2 运行环境 8 3.1.3 功能简单描述 8 3.2 软件模块设计 8 3.2.1 文字型水印类 9 3.2.2 图像型水印类 9 3.2.3 个性化涂鸦型水印类 10 3.2.4 GDI+绘制类 10 3.2.5 文件操作类 10 3.3 软件界面设计 11 3.3.1 单个文件 11 3.3.2 批量处理 15 3.3.3 模板设置 17 3.3.4 软件说明 18 第4章 系统实现 19 4.1 单个文件水印处理 19 4.1.1 文字型水印 19 4.1.2 图像型水印 21 4.1.3 个性化涂鸦型水印 23 4.2 批量水印处理 24 4.2.1 待处理文件的选择 24 4.2.2 模板设置 26 4.2.3 存储属性设置 26 4.3 水印模板设置 26 4.3.1 文字型水印模板 27 4.3.2 图像型水印模板 27 4.4 自适应颜色 27 第5章 结束语 29 致谢 30 参考文献 31 IV 第1章 引言 1.1 背景 在网络高速发展的今天,我们可以看到,有很多的网民都喜欢将自己的数码照片、绘制的图形等图像文件传到互联网上,与亲戚、朋友,或是网友分享;而亦有大部分的企业会借助互联网的普及性和简便性,来发布自己的产品示意图,借以推广自己的产品。 通过网络来分享自己的图像,本是一件很好的事。但是,在互联网上复制或者传播图像是非常容易的。因此,很多图像,在未经所有人同意的情況下就可能会被肆意的复制并传播。对于企业来说,这相当于是被盗取了版权,是很严重的问题。对于个人的用户来说,也是一样,自己的数码照片会被肆意的复制,有些人还会恶作剧的,在照片上做一些涂鸦。因此,如何保护自己的照片就成了很重要的问题。为了保护自己的图像不被滥用,同时其内容不允许篡改,但可以对图像进行一些常规的处理。此时,水印的概念便被提出来了,而这种水印要求具有半脆弱性。这种半脆弱水印可以在一定程度上容忍施加于含水印图像上的常见信号处理 [5]。 数字水印技术是新兴的信息隐藏技术。它在真伪鉴别、隐蔽通信、标志隐含、电子身份认证等方面具有重要的应用价值。数字水印技术的研究涉及信息学、密码学、数学、计算机科学、模式识别等多种学科,其巨大而广阔的应用前景,已引起学术界、工业界和军方的广泛关注[8]。 大家都知道,我们用的纸币使用了多种防伪技术,其中,水印就是重要的一个。实际上,传统意义上的水印技术有着悠久的历史,它可以追溯到700多年前的意大利。在十三世纪时,意大利有四十多家小的造纸厂,这些厂家控制着市场,决定着纸张的质量、格式及价格。当时生产的纸张需要经过工匠的二次加工才能被用户使用,因此,用户无法知道所购买的纸张是哪个厂家生产的。为了既不影响纸张的使用价值,又能让人们知道自己的品牌,有些生产厂商使用了信息隐藏技术,即在纸张制造过程中,将厂家标识、图案等嵌入纸中。这些嵌入的信息在平常情况下不易看出,只有对着强光才能看清,从而产生了纸张水印技术,这些标识和图案就是水印。水印技术由于很好地解决了商标问题,因此很快就传遍意大利及整个欧洲。 目前,水印技术仍是造纸工艺中的一部分,它主要用于提供时间、认证和生产地等信息。通过在纸中嵌入水印,可以提供相对安全的信息,因此对于印刷业来说,传统水印是一种简单、有效、可行的版权保护方法。 而在如今的社会,通常情况下,我们会通过 Photoshop 等专业的图像处理工具来完成水印的添加工作,但若每次都要使用这个“庞然大物”来加水印的话,实在会让很多人,尤其是那些不懂得Photoshop专业知识的网友望而却步。而且它使用起来也不是很方便,做出一幅很好的水印至少需要我们懂得蒙版之类的专业知识才可以得心应手。倘若碰到要处理多幅图像、或是经常有图像增加水印的工作,这将浪费我们大量的工作时间。此时,一款专业、操作简便的批量水印添加工具——数字图像水印软件便应运而生了。 1.2 研究内容及拟解决问题 数字图像可视水印软件主要面向个人、企业等,目的在于解决目前很多公司或个人将产品图像通过互联网发布到网上后,图像被别人滥用的现象。软件将会通过在图像上,添加水印图像和标记的形式来解决上述问题。软件给用户提供设计水印模板的功能,像个人用户,可以选择制作一些个性的签名来添加在自己的数码照片上,以防止他人滥用。而企业用户,可以选择在产品图像上加上自已公司的LOGO水印图像,这不仅解决了图像被盗用的问题,而且还可以借此来提高公司的知名度。 数字图像可视水印软件会是一款非常精致、专业的水印制作工具。可见水印的一些必要的特征可以概括为[9]: 1. 水印的图像,应尽量保存可能的细节,源图像的形象; 2. 水印的最重要的特点是图片应清晰可见; 3. 可见水印过程不应该引入任何人工或不符条件的操作,以避免误导观看者; 4. 水印必须是健全的攻击;移除水印时应该比购买时更加昂贵,劳动力更加密集。 本软件致力于为用户提供最简单、最方便的方式来为自己的图像添加水印。而对于将要添加的图像型水印,软件将尽力为用户自由发挥的空间,类似于使用户可以自由的加入某幅图像作为水印,还可以对加入的此水印图像进行位置设定、透明度及翻转效果设定等。 而软件拟解决的主要问题,或者说主要想实现的功能,如下: 1. 支持目前绝大部分图像格式的读取和JPEG, BMP, TIFF,PNG等图像格式的保存; 2. 实现可视化的水印模板制作功能,使得水印脚本的制作更加简单、便捷; 3. 为用户提供“添加文字型水印”的功能;并为用户提供对文字的相关设置,例如:对字体、颜色、大小、位置等等基本属性的设置; 4. 为用户提供“添加图像型水印”的功能;并为用户提供相关的数字图像处理的功能,例如:用户可以对图像进行缩放、翻转等简单操作、对比度、亮度和透明度等调节功能,使得图像的处理、加水印一步到位; 5. 为用户提供水印透明度和旋转角度的任意调整,使得加注的效果能够更加的理想; 6. 实现精确定位、平铺和填充等三种模式的水印加注方式; 7. 实现处理的实时预览功能,让处理结果明朗化; 8. 为用户提供批量添加水印的功能;当用户选择了之前保存好的模板之后,用户可以设定添加了水印后的图像的保存路径、保存格式、保存名称等实现批量添加水印功能。 9. 为用户提供“添加涂鸦水印”的功能,用户可以通过涂鸦的方式来绘制自己想要添加的水印图像,使软件更具个性化; 10. 当用户使用文字型水印模板进行批量处理时,为用户提供自适应颜色的功能。 总的来说,数字图像水印软件,将会朝着界面简洁、操作简单,并且能够一次性的快速批量进行水印添加操作的方向而发展。 1.3 应用前景 20 世纪90 年代末期国际上开始出现一些水印产品。美国的Digimarc 公司率先推出了第一个用于静止图像版权保护的数字水印软件,而后又以插件形式将该软件集成到Adobe 公司的Photoshop 和Corel Draw 图像处理软件中。AlpVision 公司推出的LavelIt 软件,能够在任何扫描的图像中隐藏若干字符,用于文档的保护与跟踪。MediaSec 公司的SysCop 用水印技术来保护多媒体内容,欲杜绝非法拷贝、传播和编辑[3]。 在国内,政府对信息安全产业的发展极为重视。数字水印的研究得到了国家自然科学基金和“863”计划的资助。国内信息隐藏学术研讨会(CIHW)自1999 年以来至今已成功举办了五届,有力地推动了水印技术的研究与发展。去年政府更颁布了《中华人民共和国电子签名法》,这给水印技术的应用提供了必要的法律依据[3]。 尽管数字水印发展迅速,但离实际应用,还有一段距离要走。许多项目和研究都还处于起步和实验阶段,已出现的水印产品还不能完全满足使用需求。如今水印技术正在向纵深发展,一些基本的技术和法律问题正逐个得到解决。相信不久的将来,水印与其它DRM 技术的结合,将彻底解决数字内容的管理和保护问题。 数字水印技术是近十年来发展起来的与信号处理、数字通信、密码学、计算机网络技术等多学科紧密相连的综合技术,对它的研究具有重要的学术价值,同时也具有潜在的应用市场和良好的应用前景。它一方面将促进多媒体技术、网络技术、通信技术、信号处理技术等多门新兴技术的有机结合,促进多媒体网络的进一步繁荣;另一方面,它将有助于多媒体信息版权保护及其版权冲突问题的解决,同时,它将促进隐蔽通信技术、信息、安全技术的提高。数字水印可用于嵌入版权和复制视频控制信息,使有益的内容分发网络视频,从内容客户个人电脑服务器[10]。 近年来,国外许多学者提出了一系列新的信息安全保护思想,特别是在知识产权保护、防窜改及嵌入式注释等领域提出了防范与保护措施。信息隐藏( information hiding)技术就是这样一种新的数字媒体保护措施[4]。数字水印是一种信息隐藏技术。其基本思想是在数字图像、音/视频等数字产品中嵌入秘密信息,以便保护数字产品的版权、证明产品的真实可靠性、跟踪盗版行为或者提供产品的附加信息。其中的秘密信息可以是版权标志、用户序列号或者是产品相关信息。一般地,它需要经过适当变换后再嵌入到数字产品中。通常称变换后的秘密信息为数字水印[4]。 数字水印的应用是极为广泛的,虽然早期的数字水印只是以版权保护为目标,但随着研究的发展, 人们发现除了版权保护之外, 水印和信息隐藏还有许多其它可能的应用[1-2][6]: (1)电视和电台广播的监视和监听 有这种要求的主要是购买了电视、电台广告时间的客户以及音像作品的版权人。购买了广告时间的人关心他们的广告是否播出了, 音像的版权人也关心他们的利益是否受到了损害。 (2)隐蔽通信 这是一种将重要信息隐藏在无关紧要的媒体中进行通信的方法更确切地说, 是一种数据隐藏的方法。 (3)交易水印或称指纹 在版权保护和版权标识中, 同一个版权水印要嵌在同一作品的不同拷贝里而在多媒体数据的销售中, 可以把销售出去的每份拷贝都加入购买者或产品序列号等信息, 这种水印称为指纹交易水印。指纹的用途是当发现有盗版行为时, 可以为追踪盗版源头提供一种调查的手段。 (4)数字签名 基于数字水印的签名与密码学中的数字签名有相似的功能,但保密性能更好,而且能实现更多的功能。 (5)电影行业 在电影行业,水印可以在两个方面使用:一个是后期制作领域,内容文件的身份标识被嵌入到视频文件当中,以便保护数字内容或者放映者等等的权益。当盗版发生的时候,只要对盗版文件进行水印解码,你就马上可以得知是在哪个环节出现了问题;第二个使用地方是在电影院放映的时候,影院以及银幕的编号、时间等都可以在放映的时候被嵌入到文件中,那么当盗版发生的时候,你就马上可以获知它是何时何地发生的。 总的来说,数字水印技术现在的应用已然是非常广阔的,但是,其未来的应用领域将会更加广阔,该技术己经引起工业界的浓厚兴趣,并日益成为国际上非常活跃的研究领域。 第2章 工具软件与技术基础 2.1 开发环境和工具 数字图像水印软件的开发工具主要是:Visual Studio 2008,Microsoft Visual Studio 2008是面向Windows Vista、Office 2007、Web 2.0的下一代开发工具,代号“Orcas”,是对Visual Studio 2005一次及时、全面的升级。VS2008引入了250多个新特性,整合了对象、关系型数据、XML的访问方式,语言更加简洁。使用Visual Studio 2008可以高效开发Windows应用。设计器中可以实时反映变更,XAML中智能感知功能可以提高开发效率。同时Visual Studio 2008支持项目模板、调试器和部署程序。Visual Studio 2008可以高效开发Web应用,集成了ASP.NET AJAX 1.0,包含ASP.NET AJAX项目模板,它还可以高效开发Office应用和Mobile应用。 软件所采用的语言为C#,C#(CSharp)是由微软公司所开发的一种面向对象,且运行于.NET Framework之上的高级程序设计语言。C#看似基于C++写成,但又融入其他语言如Delphi、Java、VisualBasic等[7]。并定于在微软职业开发者论坛(PDC)上登台亮相。C#是微软公司研究员Anders Hejlsberg的最新成果。C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司.NET windows网络框架的主角。 2.2 技术路线 在软件的开发中,主要用到的技术是:数字化可视水印制作的原理,GDI+提供的二维图形、图像处理技术以及XML文件的相关操作等。 2.2.1 数字化可视水印制作原理 数字化可视水印的制作,主要就是调节原图像文件和水印文件的透明度。透明度(Transparency),即透光的程度,这一概念已被用于多个领域。很多图片处理软件都有透明度的设置。在本论文介绍的软件中,透明度就是指水印图像中各像素的Alpha分量的透明值,影响其与原图像复叠的效果。 2.2.2 GDI+ GDI是Graphics Device Interface的缩写,含义是图形设备接口,它的主要任务是负责系统与绘图程序之间的信息交换,处理所有Windows程序的图形输出。 在Windows操作系统下,绝大多数具备图形界面的应用程序都离不开GDI,我们利用GDI所提供的众多函数就可以方便的在屏幕、打印机及其它输出设备上输出图形,文本等操作。GDI的出现使程序员无需要关心硬件设备及设备驱动,就可以将应用程序的输出转化为硬件设备上的输出,实现了程序开发者与硬件设备的隔离,大大方便了开发工作。 本论文介绍的系统中主要用到的是:Graphics类。Graphics 类是 GDI+ 的核心,Graphics 对象不仅仅是提供绘图方法,它还可以维护图形状态,使用时先根据需要设置其属性,而后便可以利用DrawImage方法在图像类所表示的绘图表面上按指定的大小绘制图像,也可以再利用DrawString的方法在图像类所表示的绘图表面上描绘文字型水印信息。 2.2.3 Bitmap类 Bitmap类是用于处理由像素数据定义的图像的对象。位图图像有几个重要的指标,包括图像的宽度和高度(像素为单位)以及每个像素颜色的位数。在使用RGB颜色模型的位图图像中,像素由三个字节组成:红、绿和蓝。每个字节包含一个0~255之间的值,三个字节共计24位。 本论文介绍的系统中,主要是利用Bitmap类来记录图像信息,以及保存处理后的图像。 2.2.4 XML XML(Extensible Markup Language)即可扩展标记语言,它与HTML一样,都是SGML(Standard Generalized Markup Language,标准通用标记语言)。Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用。 本论文介绍的系统中,主要是利用XML来导入和导出水印模板的信息。 第3章 软件总体设计 3.1 软件需求分析 3.1.1 开发目标 在网络高速发展的今天,人们时常会利用网络来分享或发布自己的图形图像文件,此时,由于网络的可复制性而引起的图像版权问题便成为人们担忧的一个重要问题。为解决这个问题,市场上引进了水印的概念,也产生了很多为用户提供添加水印的软件,如Photoshop、轻松水印等。但是,要在Photoshop里添加水印,是一件比较复杂的事情,一般没有学过相关知识的用户根本就没办法使用;而轻松水印虽然在操作上相对来说,简单了一些,但是,这是一个收费软件,对于一般的网友来说,也许不太能接受。因此,基于上述情况,数字图像可视水印软件的开发便很是需要了。软件致力于为广大网友提供一个:操作简单,功能齐全且不收费的水印添加工具。 3.1.2 运行环境 一台装有Microsoft .Net Framework 3.5的微机。 3.1.3 功能简单描述 设计界面简单但交互性强、功能齐全的数字图像可视水印软件,为用户提供添加文字型水印、图像型水印和个性化涂鸦型水印这三个基本功能。并尽量为用户提供批量处理、模板设置和预览的功能。 3.2 软件模块设计 根据软件的需求分析,数字图像可视水印软件主要分那么几个模块:文字型水印、图像型水印、个性化涂鸦型水印、GDI+绘制以及文件操作。几个模块之间既相互独立,又互有联系。 3.2.1 文字型水印类 图3-1 文字型水印类 本论文中介绍的软件为用户提供添加文字型水印的功能,其属性及方法如图3-1所示,属性包括了:透明度、旋转角度、颜色、字体、定位方式以及文字,方法主要有:确定旋转角度的可用性(数值应为0~360之间)和旋转。 3.2.2 图像型水印类 图3-2 图像型水印类 本论文中介绍的软件为用户提供添加图像型水印的功能,其属性及方法如图3-2所示,属性包括了:透明度、旋转角度、对比度、文件名、亮度、定位方式以及缩放比例,方法主要有:确定旋转角度的可用性(数值应为0~360之间),确定缩放比例的可用性,调整对比度、调整亮度和旋转。 3.2.3 个性化涂鸦型水印类 图3-3 个性化涂鸦型水印类 本论文中介绍的软件为用户提供添加个性化涂鸦型水印的功能,这部分主要用到的LineObj这个类,它定义了直线的起点和终点,以及绘图直线和保存各条直线至直线列表中的功能。 3.2.4 GDI+绘制类 图3-4 绘制类 本论文中介绍的软件主要需要使用两种绘制方法:DrawImage和DrawText。其中通过Graphics里的DrawImage()的方法可以将DrawImage与ImageWaterMark类联系起来,通过DrawString()方法可以将DrawText与TextWaterMark类联系起来。 3.2.5 文件操作类 图3-5 文件操作类 在本论文介绍的软件中,文件操作类包括了三个方法:添加单个文件、添加文件夹和删除文件 3.3 软件界面设计 数字图像可视水印软件的界面设计以简洁、交互性强为原则,希望可以使用户对如何进行添加水印操作一目了然,希望即使是对电脑知识一窍不通的用户,也可以熟练地使用该软件。 本软件将会被设计成是一个由多个用户控件组成的单窗体的软件,如图3-6所示,它由四个部分组成,分别是:单个文件处理、批量处理、模板设置和软件说明,其中,单个文件处理分成三个部分:文字型水印、图像型水印和个性化涂鸦型水印,而模板设置可分成两个部分:文字模板和图像模板。 图3-6 总结构图 接下来,我们分别介绍一下各个部分。 3.3.1 单个文件 l 文字型水印 如图3-7和3-8所示,文字型水印的界面主要分成四个区域:文件操作区(打开和保存)、文字属性区(包括基本属性区、加注方式区)、文字水印信息显示区和预览区(包括处理后图像预览区和原图信息区)。 图3-7 文字型水印(精确定位) 图3-8 文字型水印(平铺) l 图像型水印 如图3-9、3-10和3-11所示,图像型水印的界面也分成四个区域:文件操作区、图像属性区、图像水印信息显示区和预览区。这个部分的设计包括:区域的划分,控件的选择、摆放和设计,都与文字型水印的保持一致。 图3-9 图像型水印(精确定位) 图3-10 图像型水印(平铺) 图3-11 图像型水印(填充) l 个性化涂鸦型水印 如图3-12所示,个性化涂鸦型水印的界面分成三个区域:文件操作区、涂鸦工具设置区和预览区。这个部分的设计会显得跟前面两者不一样一些。 图3-12 个性化涂鸦型水印 3.3.2 批量处理 如图3-13所示,批量处理主要由三个板块组成:文件操作、模板设置和存储设置。 图3-13 批量处理板块组成 批量处理的流程如图3-14所示,先要判断水印模板的类型,然后才可以处理。 图3-14 处理流程 如图3-15和3-16所示,批量处理部分主要分四个区域:文件显示区,文件操作区、水印模板设置区以及存储设置区。各个区域划分清晰,用户操作方便。 图3-15 批量处理(文本模板) 图3-16 批量处理(图像模板) 3.3.3 模板设置 模板设置部分的设计都是与其相对应的“单个文件处理水印”的设置一致。 图3-17文本模板 图3-18图像模板 3.3.4 软件说明 为了方便用户更好的使用该软件,特意为用户提供了“软件说明”部分,在这个部分,较详细的介绍了一下如何使用该软件。也为用户提供了开发者的相关信息,使用户有意见反馈的时候,可以联系开发者。 第4章 系统实现 4.1 单个文件水印处理 本论文介绍的系统为用户提供了三种单个文件水印处理的方案,分别是:文字型水印、图像型水印和个性化涂鸦型水印。 4.1.1 文字型水印 文字型水印,顾名思义,就是在待处理的图像文件中添加文字的方案。对于添加的文字,用户可以进行字体的调整,字体颜色的调整,透明度的调整,以及定位方式的调整,还可以进行旋转的操作。具体实现方法如下: l 字体 字体部分,主要是借助于FontDialog控件来实现的。在打开FontDialog并设置完字体之后,只要添加如下代码,就可以改变文字的字体了: txtWaterText.Font = fontDialog1.Font。 l 颜色 颜色部分,主要是借助于ColorDialog控件来实现的。在打开ColorDialog并选择了颜色之后,添加如下代码,就可以改变文字的颜色: txtWaterText.ForeColor = colorDialog1.Color。 l 透明度 文字的透明度主要是通过设置笔刷属性来完成的,具体代码如下: Color c = Color.FromArgb(hsbAlpha.Value,colorDialog1.Color); SolidBrush mybrush = new SolidBrush(c); 其中,hsbAlpha就是你想设置的透明度的值,数值在(0~255)之间。 l 旋转 旋转,是先通过TranslateTransform平移图像的中心,然后再通过RotateTransform进行旋转操作,最后再还原中心的方法来实现的。具体代码如下: public void Rotate(int x,int y) { angel = angel % 360; //弧度转换 double radian = angel * Math.PI / 180.0; double cos = Math.Cos(radian); double sin = Math.Sin(radian); //原图的宽和高 int w = txtwidth; int h = txtheight; int W = (int)(Math.Max(Math.Abs(w * cos - h * sin), Math.Abs(w * cos + h * sin))); int H = (int)(Math.Max(Math.Abs(w * sin - h * cos), Math.Abs(w * sin + h * cos))); //计算偏移量 Point Offset = new Point((W - w) / 2, (H - h) / 2); //构造图像显示区域:让图像的中心与窗口的中心点一致 rect = new Rectangle(x + Offset.X, y + Offset.Y, w + 10, h + 10); Point center = new Point(rect.X + rect.Width / 2, rect.Y + rect.Height / 2); gResultImage.TranslateTransform(center.X, center.Y); gResultImage.RotateTransform(360 - angel); //恢复图像在水平和垂直方向的平移 gResultImage.TranslateTransform(-center.X, -center.Y); } l 文字型水印的高宽计算 字体高度的计算: float lengh = fontDialog1.Font.GetHeight(); txtheight = (int)lengh; 字体宽度的计算: Graphics grap = this.CreateGraphics(); grap.PageUnit = GraphicsUnit.Pixel; SizeF size = grap.MeasureString(txtWaterText.Text, fontDialog1.Font); float width = size.Width; txtwidth = (int)width; l 定位方式 在文字型水印部分,本论文介绍的系统为用户提供了两种定位方式,分别是:精确定位和平铺。当用户选择了精确定位的时候,有两种调节位置的方式:输入数值,或者,调整VScrollBar和HScrollBar控件的数值。而当用户选了平铺时,系统将根据用户输入的文字的宽度和高度来设定平铺偏移量的最小值,以避免用户进行平铺操作时,后继的文字将前面的文字覆盖。 4.1.2 图像型水印 图像型水印,是指在待处理的图像文件中添加图像的水印。而对于添加的图像,用户可以进行透明度的调整,对比度的调整,亮度的调整,以及定位方式的调整,亦可以进行旋转和缩放的操作。具体实现方法如下: l 透明度 通过矩阵相乘的方法可以改变水印图像的透明度,具体代码如下: //修改alpha值 float opacity = (float)hsbAlpha.Value / 255; float[][] nArray ={ 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, opacity, 0}, new float[] {0, 0, 0, 0, 1}}; ColorMatrix matrix = new ColorMatrix(nArray); ImageAttributes attributes = new ImageAttributes(); attributes.SetColorMatrix(matrix,ColorMatrixFlag.Default, ColorAdjustType.Bitmap); Image srcImage = bitmap; Bitmap resultImage = new Bitmap(srcImage.Width, srcImage.Height); Graphics ge = Graphics.FromImage(resultImage); ge.DrawImage(srcImage, new Rectangle(0, 0, srcImage.Width, srcImage.Height), 0, 0, srcImage.Width, srcImage.Height, GraphicsUnit.Pixel, attributes); l 对比度 对比度的主要实现代码如下: // 处理指定位置像素的对比度 for (int i = 0; i < 3; i++) { pixel = ((p[i] / 255.0 - 0.5) * contrast + 0.5) * 255; if (pixel < 0) pixel = 0; if (pixel > 255) pixel = 255; p[i] = (byte)pixel; } l 亮度 亮度的实现代码如下: // 处理指定位置像素的亮度 for (int i = 0; i < 3; i++) { pix = p[i] + degree; if (degree < 0) p[i] = (byte)Math.Max(0, pix); if (degree > 0) p[i] = (byte)Math.Min(255, pix); } l 定位方式 在图像型水印部分,本论文介绍的系统为用户提供了三种定位方式,分别是:精确定位、平铺和填充。精确定位的调节方式跟文字型水印的精确定位调节方式一致。而当用户选择平铺方式时,系统会先根据图像型水印的宽度和高度来确定最小的平铺偏移量。而当用户选择填充方式时,系统会根据图像型水印和原图像的宽度和高度的比较,来确定是根据宽度还是高度来实现填充。 l 缩放 图像型水印的缩放是实行按比例缩放的方式。缩放的实现方案,即根据缩放比例计算出缩放后的图像宽度和高度,然后对图像进行重绘。 l 旋转 图像型水印旋转的实现方案与文字型水印的类似,原理都是一样的,这里不再做详细介绍。 4.1.3 个性化涂鸦型水印 在如今这个讲究个性的时代,本论文介绍的系统就为用户提供了简单的个性化涂鸦型水印的功能。用户可以在待处理图像文件上任意绘画直线。具体实现方法将在下文介绍。 为了实现在图像上任意添加直线的功能,我们需要做这么几步工作: 1. 定义一个LineObj类 class LineObj { private Point m_start; private Point m_end; public LineObj(Point start, Point end) { this.m_start = start; this.m_end = end; } public void Draw(Graphics g, Pen pen) { g.DrawLine(pen, m_start, m_end); } } 2. 定义直线的两点,以全局变量的形式 Point start=Point.Empty; Point end; 3. 定义一个数组存储line
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服