你的位置:首页 > 软件开发 > Java > 用JAVA实现数字水印(可见)

用JAVA实现数字水印(可见)

发布时间:2015-07-17 11:00:24
数字水印有可见不可见之分,可见的比如课件上印有学校校徽,微博发图片会水印上上传者的信息及微博logo等。  用java实现可见的数字水印,草人主要是用到了java.awt包中的AlphaComposite类,当然在实现之前先介绍一下AlphaComposite类:  AlphaC ...

用JAVA实现数字水印(可见)

  数字水印有可见不可见之分,可见的比如课件上印有学校校徽,微博发图片会水印上上传者的信息及微博logo等。

  用java实现可见的数字水印,草人主要是用到了java.awt包中的AlphaComposite类,当然在实现之前先介绍一下AlphaComposite类:

  AlphaComposite类是关于两个目标重叠的混合处理类,此类实现的特定规则是 T. Porter 和 T. Duff 合著的 “Compositing Digital Images”, SIGGRAPH 84, 253-259 中描述的 12 条基本规则集。该类提供的一个getInstance的方法,其中的两个参数为rule和alpha,第二个参数将由调用者设置一个alpha值,即是透明度的设置,而第一个参数则是混合方式。此类扩展了 Porter 和 Duff 定义的方程,包含一个额外的因子。AlphaComposite 类的实例可以包含一个 alpha 值,在将该值用于混合方程之前,可以用它来修改不透明度和每个源像素的覆盖率。

  Porter和 Duff 的论文在混合方程的描述中使用了以下因子:

  用JAVA实现数字水印(可见)

  以规则SRC_OVER为例,使用这些因子,Porter 和 Duff 定义了 12 种选择混合因子 Fs 和 Fd 的方法,从而产生了 12 种令人满意的可视效果。在对 12 个指定可视效果的静态字段的描述中,给出了具有确定 Fs 和 Fd 值的方程。SRC_OVER在目标色之上合成源色(Porter-Duff Source Over Destination 规则)。指定Fs = 1 和 Fd = (1-As),因此:

       Ar = As + Ad*(1-As)

  然后为 Graphics2D 上下文设置 Composite后就可以将想要写入的文字或者图片写入源图片上

  

AlphaComposite ac = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha);      //为 Graphics2D 上下文设置 Composite。 Composite 用于所有绘制方法中,如 drawImage、      //drawString、draw 和 fill。 它指定新的像素如何在呈现过程中与图形设备上的现有像素组合。       g2d.setComposite(ac);

原标题:用JAVA实现数字水印(可见)

关键词:JAVA

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。