水印添加方法、装置、计算机设备和存储介质与流程

文档序号:24622587发布日期:2021-04-09 20:28阅读:51来源:国知局
水印添加方法、装置、计算机设备和存储介质与流程

本申请涉及数据处理技术领域,具体涉及一种水印添加方法、装置、计算机设备和存储介质。



背景技术:

现有为了保护静止图片,可以采用水印技术,将该欲加以保护的图片嵌入某些能证明版权归属或跟踪侵权行为的信息,这些信息可以是作者的序列号、公司标志以及有意义的文本等等。通过添加显式水印的方式,以达到保护图片的版权、对图片侵权行为进行跟踪的目的。但这种添加显示水印的方式会影响图片信息的展示,美观性差,且存在隐蔽性差、安全性差的问题。



技术实现要素:

本申请的主要目的为提供一种水印添加方法、装置、计算机设备和存储介质,旨在解决现有的在图片内添加显示水印的方式会影响图片信息的展示,存在隐蔽性差、安全性差的技术问题。

本申请提出一种水印添加方法,所述方法包括步骤:

获取待添加至图片内的目标数据;

对所述目标数据进行字节转换处理,得到对应的原始字节数组;

基于base64的encode方法对所述原始字节数组进行处理,生成指定字节数组;

获取所述指定字节数组中包含的字节的字符长度,并基于所述字符长度,调用预设的计算公式计算出放置位置数量;

获取所述图片的宽度值与高度值;

基于所述放置位置数量与所述宽度值计算出放置行数,并基于所述放置行数与所述高度值确定出用于添加水印的首行信息;

按照所述指定字节数组中每一个字节的排列顺序,依次获取排序最前的第一字节、第二字节与第三字节;

获取与所述首行信息对应的首添加行内排序最前的第一像素点,并基于所述第一像素点的第一像素值,获取所述第一像素点的r通道的第一颜色值、所述第一像素点的g通道的第二颜色值以及所述第一像素点的b通道的第三颜色值;

使用所述第一字节对所述第一颜色值进行更新,使用所述第二字节对所述第二颜色值进行更新,以及使用所述第三字节对所述第三颜色值进行更新,形成所述第一像素点的更新像素值,以实现对于所述第一像素点的像素值的更新,依此类推,从所述首添加行开始,按照从左到右,从上到下的方式遍历与所述放置行数对应的各添加行中包含的与所述放置位置数量相同的多个目标像素点,并跟据所述指定字节数组中每一个字节的排列顺序,使用所述指定字节数组中的每三个字节对图片内相应行的对应像素点中的三个颜色通道的颜色值进行一一对应的更新,直至完成将所述指定字节数组内包含的所有字节填充至所述图片内;

将所述字符长度填充于所述图片内的指定像素点上,得到目标图片,以完成对于所述图片的水印添加处理。

可选地,所述基于所述字符长度,调用预设的计算公式计算出放置位置数量的步骤,包括:

判断所述字符长度是否为3的倍数;

若所述字符长度为3的倍数,则调用第一计算公式count=bytes/3计算出所述放置位置数量,其中,所述count为放置位置数量,所述bytes为字符长度;

若所述字符长度不为3的倍数,则调用第二计算公式count=bytes/3+1计算出所述放置位置数量,其中,所述count为放置位置数量,所述bytes为字符长度。

可选地,所述基于所述放置位置数量与所述宽度值计算出放置行数,并基于所述放置行数与所述高度值确定出用于添加水印的首行信息的步骤,包括:

判断所述放置位置数量是否为所述宽度值的倍数;

若所述放置位置数量为所述宽度值的倍数,则调用第三计算公式row=count/width计算出所述放置行数,其中,所述row为放置行数,所述count为放置位置数量,所述width为宽度值;

若所述放置位置数量不为所述宽度值的倍数,则调用第四计算公式row=count/width+1计算出所述放置行数,其中,所述row为放置行数,所述count为放置位置数量,所述width为宽度值;

调用第五计算公式position=height-row确定出所述首行信息,其中,所述position为首行信息,所述height为高度值,所述row为放置行数。

可选地,所述基于所述第一像素点的第一像素值,获取所述第一像素点的r通道的第一颜色值、所述第一像素点的g通道的第二颜色值以及所述第一像素点的b通道的第三颜色值的步骤,包括:

将所述图片转换为bufferedimage对象;

获取所述第一像素点的二维坐标;

根据所述二维坐标,通过与所述bufferedimage对象对应的获取方法获取与所述第一像素点对应的第一像素值;

基于预设的第一变换代码对所述第一像素值进行变换处理,得到所述第一像素点的r通道的第一颜色值;以及,

基于预设的第二变换代码对所述第一像素值进行变换处理,得到所述第一像素点的g通道的第二颜色值;以及,

基于预设的第三变换代码对所述第一像素值进行变换处理,得到所述第一像素点的b通道的第三颜色值。

可选地,所述将所述字符长度填充于所述图片内的指定像素点上的步骤,包括:

判断所述字符长度是否为三位数;

若所述字符长度为三位数,则获取所述图片中的指定像素点的位置信息;

基于所述位置信息,获取与所述指定像素点对应的各个颜色通道的颜色值;

基于所述字符长度,分别提取出所述字符长度的百位数、所述字符长度的十位数与所述字符长度的个位数;

将所述指定像素点的r通道的颜色值更换为所述字符长度的百位数;以及,

将所述指定像素点的g通道的颜色值更换为所述字符长度的十位数;以及,

将所述指定像素点的b通道的颜色值更换为所述字符长度的个位数。

可选地,所述将所述字符长度填充于所述图片内的指定像素点上,得到目标图片,以完成对于所述图片的水印添加处理的步骤之前,包括:

判断所述图片内的最后一行的最后一个像素点当前是否为更新状态,其中,将所述图片内的最后一行的最后一个像素点标记为第二像素点;

若所述第二像素点当前不为更新状态,将所述第二像素点作为所述指定像素点;

若所述第二像素点当前为更新状态,则将所述图片的第一行的第一个像素点与所述图片的第一行的最后一个像素点作为备选像素点;

展示与所述备选像素点对应的选择信息;

基于反馈的与所述选择信息对应的选择结果,从所述备选像素点中确定出所述指定像素点。

可选地,所述将所述字符长度填充于所述图片内的指定像素点上,得到目标图片,以完成对于所述图片的水印添加处理的步骤之后,包括:

判断是否接收到对于所述目标图片的水印解析指令;

若接收到对于所述目标图片的水印解析指令,则基于预存储的字符长度存储规则,获取所述指定像素点的第二像素值;

基于所述第二像素值,生成对应的字节长度值;

基于所述字节长度值,计算出所述水印包含的像素点数量以及所述水印在所述目标图片中的起始插入行;

从所述起始插入行开始,按照从左到右,从上到下的顺序,获取所述起始插入行排序最前的插入像素点的像素值,并基于所述插入像素点的像素值依次获取所述插入像素点的r通道的颜色值,g通道的颜色值,b通道的颜色值,将所述插入像素点的r通道的颜色值,插入像素点的g通道的颜色值,插入像素点的b通道的颜色值依次放置于预设的字节模板中,依此类推,基于所述像素点数量,提取出除所述插入像素点外的其他插入像素点的三个通道的颜色值并对应放置于所述字节模板中,得到数据更新后的字节模板;

调用base64的decode方法,对所述数据更新后的字节模板中的所有数值进行数值转换还原处理,得到还原处理后的字节模板;

将所述还原处理后的字节模板中的所有数值转换成字符串,得到添加至所述图片内的目标数据。

本申请还提供一种水印添加装置,包括:

第一获取模块,用于获取待添加至图片内的目标数据;

第一处理模块,用于对所述目标数据进行字节转换处理,得到对应的原始字节数组;

第二处理模块,用于基于base64的encode方法对所述原始字节数组进行处理,生成指定字节数组;

第一计算模块,用于获取所述指定字节数组中包含的字节的字符长度,并基于所述字符长度,调用预设的计算公式计算出放置位置数量;

第二获取模块,用于获取所述图片的宽度值与高度值;

第二计算模块,用于基于所述放置位置数量与所述宽度值计算出放置行数,并基于所述放置行数与所述高度值确定出用于添加水印的首行信息;

第三获取模块,用于按照所述指定字节数组中每一个字节的排列顺序,依次获取排序最前的第一字节、第二字节与第三字节;

第四获取模块,用于获取与所述首行信息对应的首添加行内排序最前的第一像素点,并基于所述第一像素点的第一像素值,获取所述第一像素点的r通道的第一颜色值、所述第一像素点的g通道的第二颜色值以及所述第一像素点的b通道的第三颜色值;其中,像素点的像素值由{r,g,b}形式的三个颜色通道组成,每个颜色通道的上下限为{0,255};

更新模块,用于使用所述第一字节对所述第一颜色值进行更新,使用所述第二字节对所述第二颜色值进行更新,以及使用所述第三字节对所述第三颜色值进行更新,形成所述第一像素点的更新像素值,以实现对于所述第一像素点的像素值的更新,依此类推,从所述首添加行开始,按照从左到右,从上到下的方式遍历与所述放置行数对应的各添加行中包含的与所述放置位置数量相同的多个目标像素点,并根据所述指定字节数组中每一个字节的排列顺序,使用所述指定字节数组中的每三个字节对图片内相应行的对应像素点中的三个颜色通道的颜色值进行一一对应的更新,直至完成将所述指定字节数组内包含的所有字节填充至所述图片内;

第一生成模块,用于将所述字符长度填充于所述图片内的指定像素点上,得到目标图片,以完成对于所述图片的水印添加处理。

本申请还提供一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。

本申请还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。

本申请中提供的水印添加方法、装置、计算机设备和存储介质,具有以下有益效果:

本申请中提供的水印添加方法、装置、计算机设备和存储介质,在获取到需要添加至图片中的目标数据时,会对该目标数据进行字节变换处理以及数值控制处理以生成相应的指定字节数组,然后按照预设的更新规则依次使用指定字节数组内每三个字节对图片内相应行的对应像素点中的三个颜色通道的颜色值进行一一对应的更新处理以生成目标图片,进而实现以隐式的方式将该目标数据添加于图片中,且不会对原图片不会存在较大的视觉影响,由于生成的目标图片中包含的是与目标数据对应的隐式水印,不易被用户察觉,故能够避免目标数据的泄露,有效地保证了目标数据共享的安全性、隐蔽性和流转的可溯源性。

附图说明

图1是本申请一实施例的水印添加方法的流程示意图;

图2是本申请一实施例的水印添加装置的结构示意图;

图3是本申请一实施例的计算机设备的结构示意图。

本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用于解释本申请,并不用于限定本申请。

本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。

本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。

参照图1,本申请一实施例的水印添加方法,包括:

s1:获取待添加至图片内的目标数据;

s2:对所述目标数据进行字节转换处理,得到对应的原始字节数组;

s3:基于base64的encode方法对所述原始字节数组进行处理,生成指定字节数组;

s4:获取所述指定字节数组中包含的字节的字符长度,并基于所述字符长度,调用预设的计算公式计算出放置位置数量;

s5:获取所述图片的宽度值与高度值;

s6:基于所述放置位置数量与所述宽度值计算出放置行数,并基于所述放置行数与所述高度值确定出用于添加水印的首行信息;

s7:按照所述指定字节数组中每一个字节的排列顺序,依次获取排序最前的第一字节、第二字节与第三字节;

s8:获取与所述首行信息对应的首添加行内排序最前的第一像素点,并基于所述第一像素点的第一像素值,获取所述第一像素点的r通道的第一颜色值、所述第一像素点的g通道的第二颜色值以及所述第一像素点的b通道的第三颜色值;其中,像素点的像素值由{r,g,b}形式的三个颜色通道组成,每个颜色通道的上下限为{0,255};

s9:使用所述第一字节对所述第一颜色值进行更新,使用所述第二字节对所述第二颜色值进行更新,以及使用所述第三字节对所述第三颜色值进行更新,形成所述第一像素点的更新像素值,以实现对于所述第一像素点的像素值的更新,依此类推,从所述首添加行开始,按照从左到右,从上到下的方式遍历与所述放置行数对应的各添加行中包含的与所述放置位置数量相同的多个目标像素点,并根据所述指定字节数组中每一个字节的排列顺序,使用所述指定字节数组中的每三个字节对图片内相应行的对应像素点中的三个颜色通道的颜色值进行一一对应的更新,直至完成将所述指定字节数组内包含的所有字节填充至所述图片内;

s10:将所述字符长度填充于所述图片内的指定像素点上,得到目标图片,以完成对于所述图片的水印添加处理。

如上述步骤s1至s10所述,本方法实施例的执行主体为一种水印添加装置。在实际应用中,上述水印添加装置可以通过虚拟装置,例如软件代码实现,也可以通过写入或集成有相关执行代码的实体装置实现,且可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。本实施例中的水印添加装置,能够以隐式的方式将该目标数据添加于图片中来完成对于图片的水印添加处理,且不会对原图片不会存在较大的视觉影响。具体地,首先获取待添加至图片内的目标数据。其中,上述目标数据为用于生成后续的图片水印的原始数据,对该目标数据不作具体限定,可根据实际需求生成或由用户输入得到,例如可为123456。在得到了目标数据后,对上述目标数据进行字节转换处理,得到对应的原始字节数组。其中,可通过content.getbytes()方法来实现对于目标数据的字节转换处理,content为上述目标数据。然后基于base64的encode方法对上述原始字节数组进行处理,生成指定字节数组。其中,通过上述字节转换处理得到的原始字节数组中会有负数存在,为了满足字节数组中的所有数字都是在0-255之间,会进一步对该原始字节数据进行base64的encode方法处理,以使得到的指定字节数据内的所有值都会在0-255之间,以便后续能够使用生成的指定字节数组中的字节来顺利地对图片中相应像素点的颜色值的数值替换处理,以实现对于图片的水印添加处理。在得到了上述指定字节数组后,获取上述指定字节数组中包含的字节的字符长度,并基于上述字符长度,调用预设的计算公式计算出放置位置数量。其中,上述字符长度是指指定字节数组中包含的字节的数量。另外,可基于字符长度与3之间的倍数关系,调用相应的计算公式count=bytes/3或count=bytes/3+1来计算出上述放置位置数量,上述count为放置位置数量,上述bytes为字符长度。并且获取上述图片的宽度值与高度值。其中,宽度值表示为图片中的任意一行像素点的个数,即一行可以放多少个像素,高度值表示为图片中的任意一列像素点的个数。之后基于上述放置位置数量与上述宽度值计算出放置行数,并基于上述放置行数与上述高度值确定出用于添加水印的首行信息。其中,上述放置行数是指在图片内填充上述指定字节数组中包含的所有字符所需要的行数。可基于放置位置数量与宽度值之间的倍数关系,调用相应的计算公式row=count/width或row=count/width+1来计算出上述放置行数,上述row为放置行数,上述count为放置位置数量,上述width为宽度值。后续按照上述指定字节数组中每一个字节的排列顺序,依次获取排序最前的第一字节、第二字节与第三字节。其中,上述字节的排列顺序为从左到右,从上到下的顺序。然后获取与上述首行信息对应的首添加行内排序最前的第一像素点,并基于上述第一像素点的第一像素值,获取上述第一像素点的r通道的第一颜色值、上述第一像素点的g通道的第二颜色值以及上述第一像素点的b通道的第三颜色值。其中,像素点的像素值由{r,g,b}形式的三个颜色通道组成,每个颜色通道的上下限为{0,255}。另外,可先将图片转换为bufferedimage对象,再基于图片中任意像素点的二维坐标来获取相应的像素值,并基于预设的变换代码来提取与像素值对应的各颜色通道上的颜色值。此外,上述首添加行内的排列顺序为从左到右的顺序。之后使用上述第一字节对上述第一颜色值进行更新,使用上述第二字节对上述第二颜色值进行更新,以及使用上述第三字节对上述第三颜色值进行更新,形成上述第一像素点的更新像素值,以实现对于上述第一像素点的像素值的更新,依此类推,从上述首添加行开始,按照从左到右,从上到下的方式遍历与上述放置行数对应的各添加行中包含的与上述放置位置数量相同的多个目标像素点,并根据上述指定字节数组中每一个字节的排列顺序,使用上述指定字节数组中的每三个字节对图片内相应行的对应像素点中的三个颜色通道的颜色值进行一一对应的更新,直至完成将上述指定字节数组内包含的所有字节填充至上述图片内。最后将上述字符长度填充于上述图片内的指定像素点上,得到目标图片,以完成对于上述图片的水印添加处理。其中,对于上述指定像素点不作具体限定,例如可采用图片中的边缘像素点。本实施例在获取到需要添加至图片中的目标数据时,会对该目标数据进行字节变换处理以及数值控制处理以生成相应的指定字节数组,然后按照预设的更新规则依次使用指定字节数组内每三个字节对图片内相应行的对应像素点中的三个颜色通道的颜色值进行一一对应的更新处理以生成目标图片,进而实现以隐式的方式将该目标数据添加于图片中,且不会对原图片不会存在较大的视觉影响,由于生成的目标图片中包含的是与目标数据对应的隐式水印,不易被用户察觉,故能够避免目标数据的泄露,有效地保证了目标数据共享的安全性、隐蔽性和流转的可溯源性。

进一步地,本申请一实施例中,上述步骤s4,包括:

s400:判断所述字符长度是否为3的倍数;

s401:若所述字符长度为3的倍数,则调用第一计算公式count=bytes/3计算出所述放置位置数量,其中,所述count为放置位置数量,所述bytes为字符长度;

s402:若所述字符长度不为3的倍数,则调用第二计算公式count=bytes/3+1计算出所述放置位置数量,其中,所述count为放置位置数量,所述bytes为字符长度。

如上述步骤s400至s402所述,图片中的像素点中有三个位置可以放值,该三个位置即即该像素点中包含的三个颜色通道,因而可将与待添加至图片内的目标数据对应的指定字节数组中依次排序的每三个字节作为一组一一对应地放置于相应数量的多个像素点中,以实现以字节填充的形式在图片中隐式添加与目标数据对应的水印。计算上述相应数量的过程,也即上述基于上述字符长度,调用预设的计算公式计算出放置位置数量的步骤,具体可包括:判断上述字符长度是否为3的倍数。如果上述字符长度为3的倍数,则调用第一计算公式count=bytes/3计算出上述放置位置数量,其中,上述count为放置位置数量,上述bytes为字符长度,上述/为取整符号。而如果上述字符长度不为3的倍数,则调用第二计算公式count=bytes/3+1计算出上述放置位置数量,其中,上述count为放置位置数量,上述bytes为字符长度,上述/为取整符号。另外,当上述字符长度不为3的倍数时,在计算公式中加1的目的是在java中除以一个数,如果不能整除,就会只取整数部分,小数部分就没有了,那么小数部分对应的字符不管是一个字符还是两个字符,它总要占一个像素的位置,所以要在bytes/3的基础上加1来得到放置位置数量。本实施例能够基于上述字符长度快速地计算出与上述指定字节数组对应的放置位置数量,有利于根据得到的放置位置数量快速便捷地计算出与指定字节数组对应的放置行数与确定出用于添加水印的首行信息,进而后续根据该放置行数与该首行信息准确快速地使用指定字节数组实现对于图片的水印添加处理。

进一步地,本申请一实施例中,上述步骤s6,包括:

s600:判断所述放置位置数量是否为所述宽度值的倍数;

s601:若所述放置位置数量为所述宽度值的倍数,则调用第三计算公式row=count/width计算出所述放置行数,其中,所述row为放置行数,所述count为放置位置数量,所述width为宽度值;

s602:若所述放置位置数量不为所述宽度值的倍数,则调用第四计算公式row=count/width+1计算出所述放置行数,其中,所述row为放置行数,所述count为放置位置数量,所述width为宽度值;

s603:调用第五计算公式position=height-row确定出所述首行信息,其中,所述position为首行信息,所述height为高度值,所述row为放置行数。

如上述步骤s600至s603所述,上述基于上述放置位置数量与上述宽度值计算出放置行数,并基于上述放置行数与上述高度值确定出用于添加水印的首行信息的步骤,具体可包括:首先判断上述放置位置数量是否为上述宽度值的倍数。如果上述放置位置数量为上述宽度值的倍数,则调用第三计算公式row=count/width计算出上述放置行数,其中,上述row为放置行数,上述count为放置位置数量,上述width为宽度值,上述/为取整符号。而如果上述放置位置数量不为上述宽度值的倍数,则调用第四计算公式row=count/width+1计算出上述放置行数,其中,上述row为放置行数,上述count为放置位置数量,上述width为宽度值,上述/为取整符号。另外,当上述放置位置数量不为上述宽度值的倍数时,在计算公式中加1的目的是在java中除以一个数,如果不能整除,就会只取整数部分,小数部分就没有了,但小数部分不管是什么数据,它总要占新的一行里一个或多个像素的位置,所以要在count/width的基础上加1以求出上述放置行数。以及调用第五计算公式position=height-row确定出上述首行信息,其中,上述position为首行信息,首行信息是图片中开始用于添加水印的行,上述height为高度值,上述row为放置行数。其中,为了避免添加的与目标数据对应的水印会对图片的原始内容造成较大的影响,因而会将与目标数据对应的指定字符数组中的字节数据优先添加于处于图片最下方的最后一行或多行的像素点位置上。本实施例通过基于上述放置位置数量与上述宽度值计算出放置行数,并基于上述放置行数与上述高度值确定出用于添加水印的首行信息,有利于后续根据该放置行数与该首行信息来准确快速地使用指定字节数组实现对于图片的水印添加处理。

进一步地,本申请一实施例中,上述步骤s8,包括:

s800:将所述图片转换为bufferedimage对象;

s801:获取所述第一像素点的二维坐标;

s802:根据所述二维坐标,通过与所述bufferedimage对象对应的获取方法获取与所述第一像素点对应的第一像素值;

s803:基于预设的第一变换代码对所述第一像素值进行变换处理,得到所述第一像素点的r通道的第一颜色值;以及,

s804:基于预设的第二变换代码对所述第一像素值进行变换处理,得到所述第一像素点的g通道的第二颜色值;以及,

s805:基于预设的第三变换代码对所述第一像素值进行变换处理,得到所述第一像素点的b通道的第三颜色值。

如上述步骤s800至s805所述,上述基于上述第一像素点的第一像素值,获取上述第一像素点的r通道的第一颜色值、上述第一像素点的g通道的第二颜色值以及上述第一像素点的b通道的第三颜色值的步骤,具体可包括:首先将上述图片转换为bufferedimage对象。其中,在将图片转换成bufferedimage对象后,可以获取到图片内任意一个像素点的像素值,使得后续能够根据该像素值来分别提取出像素点上各颜色通道上的颜色值。然后获取上述第一像素点的二维坐标。之后根据上述二维坐标,通过与上述bufferedimage对象对应的获取方法获取与上述第一像素点对应的第一像素值。其中,如果该第一像素点的坐标为(x,y),则对应的上述获取方法具体可为bufferedimage.getrgb(x,y)方法。最后基于预设的第一变换代码对上述第一像素值进行变换处理,得到上述第一像素点的r通道的第一颜色值,其中,上述第一变换代码具体可为intr=(rgb&0xff0000)>>16,通过执行该第一变换代码便可计算得到上述第一颜色值;以及基于预设的第二变换代码对上述第一像素值进行变换处理,得到上述第一像素点的g通道的第二颜色值,其中,上述第二变换代码具体可为:intg=(rgb&0xff00)>>8,通过执行该第二变换代码便可计算得到上述第二颜色值;以及基于预设的第三变换代码对上述第一像素值进行变换处理,得到上述第一像素点的b通道的第三颜色值,其中,上述第三变换代码具体可为:intb=(rgb&0xff),通过执行该第三变换代码便可计算得到上述第三颜色值。本实施例能够基于预设的获取方法与变换代码来快速地获取到上述第一像素点的各个颜色通道上的颜色值,进而有助于后续准确地执行使用上述第一字节对上述第一颜色值进行更新,使用上述第二字节对上述第二颜色值进行更新,以及使用上述第三字节对上述第三颜色值进行更新的水印添加过程。

进一步地,本申请一实施例中,上述步骤s10,包括:

s1000:判断所述字符长度是否为三位数;

s1001:若所述字符长度为三位数,则获取所述图片中的指定像素点的位置信息;

s1002:基于所述位置信息,获取与所述指定像素点对应的各个颜色通道的颜色值;

s1003:基于所述字符长度,分别提取出所述字符长度的百位数、所述字符长度的十位数与所述字符长度的个位数;

s1004:将所述指定像素点的r通道的颜色值更换为所述字符长度的百位数;以及,

s1005:将所述指定像素点的g通道的颜色值更换为所述字符长度的十位数;以及,

s1006:将所述指定像素点的b通道的颜色值更换为所述字符长度的个位数。

如上述步骤s1000至s1006所述,上述将上述字符长度填充于上述图片内的指定像素点上的步骤,具体可包括:首先判断上述字符长度是否为三位数。其中,三位数是指字符长度的数值范围处于100-999的范围之内。如果上述字符长度为三位数,则获取上述图片中的指定像素点的位置信息。其中,上述指定像素点是指用于存储上述字符长度的像素点位置,对于该指定像素点所对应的具体像素点的位置不作具体限定,可根据实际使用需求进行设置,优选可将该图片内的最后一行的最后一个像素点、图片的第一行的第一个像素点或者图片的第一行的最后一个像素点等处于图片边缘位置的像素点用作上述指定像素点,以有效避免添加的字节长度会对图片的原始内容造成较大的视觉影响。另外,上述位置信息是指上述指定像素点的二维坐标信息。然后基于上述位置信息,获取与上述指定像素点对应的各个颜色通道的颜色值。其中,可参考上述第一像素点的各颜色值的获取方法来实现对于与上述指定像素点对应的各个颜色通道的颜色值的获取,在此不再赘述。之后基于上述字符长度,分别提取出上述字符长度的百位数、上述字符长度的十位数与上述字符长度的个位数。其中,可采用相应的取整公式与取余公式来计算得到上述字符长度的百位数、十位数与个位数。举例地,假如字符长度为123,可通过以下的取整公式与取余公式,123/100=1;123%100=23,23/10=2;23%10=3来得到有1,2,3这三个值,也即1,2,3分别对应字符长度的百位数、十位数与个位数。最后将上述指定像素点的r通道的颜色值更换为上述字符长度的百位数;以及将上述指定像素点的g通道的颜色值更换为上述字符长度的十位数;以及将上述指定像素点的b通道的颜色值更换为上述字符长度的个位数。其中,在完成了将上述字符长度填充于上述图片内的指定像素点上的处理后,后续还需存储相应的字符长度存储规则,以便后续根据该字符长度存储规则来对生成的目标图片中包含的水印进行逆解析处理以提取出原始的目标数据。本实施例在完成了将与目标数据对应的指定字节数组内包含的所有字节填充至上述图片内时,通过将字符长度于同时存储在图片的指定像素点内,有利于后续能够根据该指定像素点来快速智能的解析出该字符长度,进而根据该字符长度来解析出上述图片中的添加内容,以实现对于图片中的隐式水印的精确解析。进一步地,对于不同数值的字符长度,还可根据实际需求灵活设置多种存储方法。举例地,如果字符长度为两位数,则将上述字符长度填充于上述图片内的指定像素点上的过程可包括:保持上述指定像素点的r通道的颜色值不变,将上述指定像素点的r通道的颜色值更换为上述字符长度的百位数,以及将上述指定像素点的g通道的颜色值更换为上述字符长度的十位数。

进一步地,本申请一实施例中,上述步骤s10之前,包括:

s1100:判断所述图片内的最后一行的最后一个像素点当前是否为更新状态,其中,将所述图片内的最后一行的最后一个像素点标记为第二像素点;

s1101:若所述第二像素点当前不为更新状态,将所述第二像素点作为所述指定像素点;

s1102:若所述第二像素点当前为更新状态,则将所述图片的第一行的第一个像素点与所述图片的第一行的最后一个像素点作为备选像素点;

s1103:展示与所述备选像素点对应的选择信息;

s1104:基于反馈的与所述选择信息对应的选择结果,从所述备选像素点中确定出所述指定像素点。

如上述步骤s1100至s1104所述,在进行将上述字符长度填充于上述图片内的指定像素点上的填充过程之前,还可包括确定出上述指定像素点的确定过程。具体地,上述将上述字符长度填充于上述图片内的指定像素点上,得到目标图片,以完成对于上述图片的水印添加处理的步骤之前,还可包括:首先判断上述图片内的最后一行的最后一个像素点当前是否为更新状态,其中,将上述图片内的最后一行的最后一个像素点标记为第二像素点。另外,上述更新状态是指该第二像素点中包含的颜色通道的颜色值是否被其他数据替换过的状态。如果上述第二像素点当前不为更新状态,将上述第二像素点作为上述指定像素点。其中,上述第二像素点指图片的右下角的第一边缘像素点。而如果上述第二像素点当前为更新状态,则将上述图片的第一行的第一个像素点与上述图片的第一行的最后一个像素点作为备选像素点。其中,上述图片的第一行的第一个像素点是指图片的左上角的第二边缘像素点,上述图片的第一行的最后一个像素点是指图片的右上角的第二边缘像素点。然后展示与上述备选像素点对应的选择信息。其中,上述选择信息为用于提醒用户从展示的两个备选像素点中选择一个的信息。最后基于反馈的与上述选择信息对应的选择结果,从上述备选像素点中确定出上述指定像素点。其中,可将与用户的选择结果对应的一个备选像素点作为上述指定像素点。本实施例通过使用图片中的特殊像素点,如左上角的第二边缘像素点、右上角的第三边缘像素点或右下角的第四边缘像素点来存储字符长度,以有效避免添加的字节长度会对图片的原始内容造成较大的视觉影响,有利于后续能够在解析生成的目标图片中的水印时,能够基于该特殊像素点来快速地获取到该目标图片中的添加水印的字符长度,进而根据该字符长度来解析出上述图片中的添加内容,以实现对于图片中的隐式水印的精确解析。

进一步地,本申请一实施例中,上述步骤s10之后,包括:

s1200:判断是否接收到对于所述目标图片的水印解析指令;

s1201:若接收到对于所述目标图片的水印解析指令,则基于预存储的字符长度存储规则,获取所述指定像素点的第二像素值;

s1202:基于所述第二像素值,生成对应的字节长度值;

s1203:基于所述字节长度值,计算出所述水印包含的像素点数量以及所述水印在所述目标图片中的起始插入行;

s1204:从所述起始插入行开始,按照从左到右,从上到下的顺序,获取所述起始插入行排序最前的插入像素点的像素值,并基于所述插入像素点的像素值依次获取所述插入像素点的r通道的颜色值,g通道的颜色值,b通道的颜色值,将所述插入像素点的r通道的颜色值,插入像素点的g通道的颜色值,插入像素点的b通道的颜色值依次放置于预设的字节模板中,依此类推,基于所述像素点数量,提取出除所述插入像素点外的其他插入像素点的三个通道的颜色值并对应放置于所述字节模板中,得到数据更新后的字节模板;

s1205:调用base64的decode方法,对所述数据更新后的字节模板中的所有数值进行数值转换还原处理,得到还原处理后的字节模板;

s1206:将所述还原处理后的字节模板中的所有数值转换成字符串,得到添加至所述图片内的目标数据。

如上述步骤s1200至s1206所述,在基于目标数据完成了对于图片的水印添加处理得到目标图片后,还可进一步对该目标图片进行水印解析处理,以查询出上述目标数据。具体地,上述将上述字符长度填充于上述图片内的指定像素点上,得到目标图片,以完成对于上述图片的水印添加处理的步骤之后,还可包括:首先判断是否接收到对于上述目标图片的水印解析指令。如果接收到对于上述目标图片的水印解析指令,则基于预存储的字符长度存储规则,获取上述指定像素点的第二像素值。其中,上述字符长度存储规则是指填充于目标图片内的字符长度相应的预先存储的规则。然后基于上述第二像素值,生成对应的字节长度值。其中,可以根据第二像素值先求取出相应的各个颜色通道的颜色值,再根据得到的颜色值与上述字符长度存储规则来生成上述字节长度值。并且基于上述字节长度值,计算出上述水印包含的像素点数量以及上述水印在上述目标图片中的起始插入行。其中,可参考上述放置位置数量的计算方式所对应的计算公式来计算出上述像素点数量。以及基于公式count1/width来计算出上述起始插入行,count1为像素点数量,width为图片的宽度值。之后从上述起始插入行开始,按照从左到右,从上到下的顺序,获取上述起始插入行排序最前的插入像素点的像素值,并基于上述插入像素点的像素值依次获取上述插入像素点的r通道的颜色值,g通道的颜色值,b通道的颜色值,将上述插入像素点的r通道的颜色值,插入像素点的g通道的颜色值,插入像素点的b通道的颜色值依次放置于预设的字节模板中,依此类推,基于上述像素点数量,提取出除上述插入像素点外的其他插入像素点的三个通道的颜色值并对应放置于上述字节模板中,得到数据更新后的字节模板。后续再调用base64的decode方法,对上述数据更新后的字节模板中的所有数值进行数值转换还原处理,得到还原处理后的字节模板。最后将上述还原处理后的字节模板中的所有数值转换成字符串,得到添加至上述图片内的目标数据。本实施例在生成了添加有水印数据的目标图片后,由于目标图片中的指定像素点中存储有与添加的字符数组对应的字符长度,则通过预存储的字符长度存储规则对该指定像素点进行解析后能够得到该字符长度值,进而后续能够根据解析出的字符长度值来快速智能地解析出与添加至目标图片的指定字符数组对应的目标数据,进而实现对于目标图片的准确鉴权,便于对图片的真伪进行验证,大大提高隐私泄露溯源的效率。

本申请实施例中的水印添加方法还可以应用于区块链领域,如将上述目标图片等数据存储于区块链上。通过使用区块链来对上述目标图片进行存储和管理,能够有效地保证上述目标附加险信息的安全性与不可篡改性。

上述区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。

区块链底层平台可以包括用户管理、基础服务、智能合约以及运营监控等处理模块。其中,用户管理模块负责所有区块链参与者的身份信息管理,包括维护公私钥生成(账户管理)、密钥管理以及用户真实身份和区块链地址对应关系维护(权限管理)等,并且在授权的情况下,监管和审计某些真实身份的交易情况,提供风险控制的规则配置(风控审计);基础服务模块部署在所有区块链节点设备上,用来验证业务请求的有效性,并对有效请求完成共识后记录到存储上,对于一个新的业务请求,基础服务先对接口适配解析和鉴权处理(接口适配),然后通过共识算法将业务信息加密(共识管理),在加密之后完整一致的传输至共享账本上(网络通信),并进行记录存储;智能合约模块负责合约的注册发行以及合约触发和合约执行,开发人员可以通过某种编程语言定义合约逻辑,发布到区块链上(合约注册),根据合约条款的逻辑,调用密钥或者其它的事件触发执行,完成合约逻辑,同时还提供对合约升级注销的功能;运营监控模块主要负责产品发布过程中的部署、配置的修改、合约设置、云适配以及产品运行中的实时状态的可视化输出,例如:告警、监控网络情况、监控节点设备健康状态等。

参照图2,本申请一实施例中还提供了一种水印添加装置,包括:

第一获取模块1,用于第一获取模块,用于获取待添加至图片内的目标数据;

第一处理模块2,用于对所述目标数据进行字节转换处理,得到对应的原始字节数组;

第二处理模块3,用于基于base64的encode方法对所述原始字节数组进行处理,生成指定字节数组;

第一计算模块4,用于获取所述指定字节数组中包含的字节的字符长度,并基于所述字符长度,调用预设的计算公式计算出放置位置数量;

第二获取模块5,用于获取所述图片的宽度值与高度值;

第二计算模块6,用于基于所述放置位置数量与所述宽度值计算出放置行数,并基于所述放置行数与所述高度值确定出用于添加水印的首行信息;

第三获取模块7,用于按照所述指定字节数组中每一个字节的排列顺序,依次获取排序最前的第一字节、第二字节与第三字节;

第四获取模块8,用于获取与所述首行信息对应的首添加行内排序最前的第一像素点,并基于所述第一像素点的第一像素值,获取所述第一像素点的r通道的第一颜色值、所述第一像素点的g通道的第二颜色值以及所述第一像素点的b通道的第三颜色值;

更新模块9,用于使用所述第一字节对所述第一颜色值进行更新,使用所述第二字节对所述第二颜色值进行更新,以及使用所述第三字节对所述第三颜色值进行更新,形成所述第一像素点的更新像素值,以实现对于所述第一像素点的像素值的更新,依此类推,从所述首添加行开始,按照从左到右,从上到下的方式遍历与所述放置行数对应的各添加行中包含的与所述放置位置数量相同的多个目标像素点,并根据所述指定字节数组中每一个字节的排列顺序,使用所述指定字节数组中的每三个字节对图片内相应行的对应像素点中的三个颜色通道的颜色值进行一一对应的更新,直至完成将所述指定字节数组内包含的所有字节填充至所述图片内;

第一生成模块10,用于将所述字符长度填充于所述图片内的指定像素点上,得到目标图片,以完成对于所述图片的水印添加处理。

本实施例中,上述水印添加装置中的第一获取模块、第一处理模块、第二处理模块、第一计算模块、第二获取模块、第二计算模块、第三获取模块、第四获取模块、更新模块与第一生成模块的功能和作用的实现过程具体详见上述水印添加方法中对应步骤s1至s10的实现过程,在此不再赘述。

进一步地,本申请一实施例中,上述第一计算模块,包括:

第一判断单元,用于判断所述字符长度是否为3的倍数;

第一计算单元,用于若所述字符长度为3的倍数,则调用第一计算公式count=bytes/3计算出所述放置位置数量,其中,所述count为放置位置数量,所述bytes为字符长度;

第二计算单元,用于若所述字符长度不为3的倍数,则调用第二计算公式count=bytes/3+1计算出所述放置位置数量,其中,所述count为放置位置数量,所述bytes为字符长度。

本实施例中,上述水印添加装置中的第一判断单元、第一计算单元与第二计算单元的功能和作用的实现过程具体详见上述水印添加方法中对应步骤s400至s402的实现过程,在此不再赘述。

进一步地,本申请一实施例中,上述第二计算模块,包括:

第二判断单元,用于判断所述放置位置数量是否为所述宽度值的倍数;

第三计算单元,用于若所述放置位置数量为所述宽度值的倍数,则调用第三计算公式row=count/width计算出所述放置行数,其中,所述row为放置行数,所述count为放置位置数量,所述width为宽度值;

第四计算单元,用于若所述放置位置数量不为所述宽度值的倍数,则调用第四计算公式row=count/width+1计算出所述放置行数,其中,所述row为放置行数,所述count为放置位置数量,所述width为宽度值;

第五计算单元,用于调用第五计算公式position=height-row确定出所述首行信息,其中,所述position为首行信息,所述height为高度值,所述row为放置行数。

本实施例中,上述水印添加装置中的第二判断单元、第三计算单元、第四计算单元与第五计算单元的功能和作用的实现过程具体详见上述水印添加方法中对应步骤s600至s603的实现过程,在此不再赘述。

进一步地,本申请一实施例中,上述第四获取模块,包括:

转换单元,用于将所述图片转换为bufferedimage对象;

第一获取单元,用于获取所述第一像素点的二维坐标;

第二获取单元,用于根据所述二维坐标,通过与所述bufferedimage对象对应的获取方法获取与所述第一像素点对应的第一像素值;

第一变换单元,用于基于预设的第一变换代码对所述第一像素值进行变换处理,得到所述第一像素点的r通道的第一颜色值;以及,

第二变换单元,用于基于预设的第二变换代码对所述第一像素值进行变换处理,得到所述第一像素点的g通道的第二颜色值;以及,

第三变换单元,用于基于预设的第三变换代码对所述第一像素值进行变换处理,得到所述第一像素点的b通道的第三颜色值。

本实施例中,上述水印添加装置中的转换单元、第一获取单元、第二获取单元、第一变换单元、第二变换单元与第三变换单元的功能和作用的实现过程具体详见上述水印添加方法中对应步骤s800至s805的实现过程,在此不再赘述。

进一步地,本申请一实施例中,上述生成模块,包括:

第三判断单元,用于判断所述字符长度是否为三位数;

第三获取单元,用于若所述字符长度为三位数,则获取所述图片中的指定像素点的位置信息;

第四获取单元,用于基于所述位置信息,获取与所述指定像素点对应的各个颜色通道的颜色值;

提取单元,用于基于所述字符长度,分别提取出所述字符长度的百位数、所述字符长度的十位数与所述字符长度的个位数;

第一更换单元,用于将所述指定像素点的r通道的颜色值更换为所述字符长度的百位数;以及,

第二更换单元,用于将所述指定像素点的g通道的颜色值更换为所述字符长度的十位数;以及,

第三更换单元,用于将所述指定像素点的b通道的颜色值更换为所述字符长度的个位数。

本实施例中,上述水印添加装置中的第三判断单元、第三获取单元、第四获取单元、提取单元、第一更换单元、第二更换单元与第三更换单元的功能和作用的实现过程具体详见上述水印添加方法中对应步骤s1000至s1006的实现过程,在此不再赘述。

进一步地,本申请一实施例中,上述水印添加装置,包括:

第一判断模块,用于判断所述图片内的最后一行的最后一个像素点当前是否为更新状态,其中,将所述图片内的最后一行的最后一个像素点标记为第二像素点;

第一确定模块,用于若所述第二像素点当前不为更新状态,将所述第二像素点作为所述指定像素点;

第二确定模块,用于若所述第二像素点当前为更新状态,则将所述图片的第一行的第一个像素点与所述图片的第一行的最后一个像素点作为备选像素点;

展示模块,用于展示与所述备选像素点对应的选择信息;

第三确定模块,用于基于反馈的与所述选择信息对应的选择结果,从所述备选像素点中确定出所述指定像素点。

本实施例中,上述水印添加装置中的第一判断模块、第一确定模块、第二确定模块、展示模块与第三确定模块的功能和作用的实现过程具体详见上述水印添加方法中对应步骤s1100至s1104的实现过程,在此不再赘述。

进一步地,本申请一实施例中,上述水印添加装置,包括:

第二判断模块,用于判断是否接收到对于所述目标图片的水印解析指令;

第五获取模块,用于若接收到对于所述目标图片的水印解析指令,则基于预存储的字符长度存储规则,获取所述指定像素点的第二像素值;

第二生成模块,用于基于所述第二像素值,生成对应的字节长度值;

第三计算模块,用于基于所述字节长度值,计算出所述水印包含的像素点数量以及所述水印在所述目标图片中的起始插入行;

第三处理模块,用于从所述起始插入行开始,按照从左到右,从上到下的顺序,获取所述起始插入行排序最前的插入像素点的像素值,并基于所述插入像素点的像素值依次获取所述插入像素点的r通道的颜色值,g通道的颜色值,b通道的颜色值,将所述插入像素点的r通道的颜色值,插入像素点的g通道的颜色值,插入像素点的b通道的颜色值依次放置于预设的字节模板中,依此类推,基于所述像素点数量,提取出除所述插入像素点外的其他插入像素点的三个通道的颜色值并对应放置于所述字节模板中,得到数据更新后的字节模板;

还原模块,用于调用base64的decode方法,对所述数据更新后的字节模板中的所有数值进行数值转换还原处理,得到还原处理后的字节模板;

转换模块,用于将所述还原处理后的字节模板中的所有数值转换成字符串,得到添加至所述图片内的目标数据。

本实施例中,上述水印添加装置中的第二判断模块、第五获取模块、第二生成模块、第三计算模块、第三处理模块、还原模块与转换模块的功能和作用的实现过程具体详见上述水印添加方法中对应步骤s1200至s1206的实现过程,在此不再赘述。

参照图3,本申请实施例中还提供一种计算机设备,该计算机设备可以是服务器,其内部结构可以如图3所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏、输入装置和数据库。其中,该计算机设备设计的处理器用于提供计算和控制能力。该计算机设备的存储器包括存储介质、内存储器。该存储介质存储有操作系统、计算机程序和数据库。该内存储器为存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储目标数据、指定字节数组、放置位置数量、放置行数、目标像素点、指定像素点以及目标图片。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机设备的显示屏是计算机中必不可少的一种图文输出设备,用于将数字信号转换为光信号,使文字与图形在显示屏的屏幕上显示出来。该计算机设备的输入装置是计算机与用户或其他设备之间进行信息交换的主要装置,用于把数据、指令及某些标志信息等输送到计算机中去。该计算机程序被处理器执行时以实现一种水印添加方法。

上述处理器执行上述水印添加方法的步骤:

获取待添加至图片内的目标数据;

对所述目标数据进行字节转换处理,得到对应的原始字节数组;

基于base64的encode方法对所述原始字节数组进行处理,生成指定字节数组;

获取所述指定字节数组中包含的字节的字符长度,并基于所述字符长度,调用预设的计算公式计算出放置位置数量;

获取所述图片的宽度值与高度值;

基于所述放置位置数量与所述宽度值计算出放置行数,并基于所述放置行数与所述高度值确定出用于添加水印的首行信息;

按照所述指定字节数组中每一个字节的排列顺序,依次获取排序最前的第一字节、第二字节与第三字节;

获取与所述首行信息对应的首添加行内排序最前的第一像素点,并基于所述第一像素点的第一像素值,获取所述第一像素点的r通道的第一颜色值、所述第一像素点的g通道的第二颜色值以及所述第一像素点的b通道的第三颜色值;

使用所述第一字节对所述第一颜色值进行更新,使用所述第二字节对所述第二颜色值进行更新,以及使用所述第三字节对所述第三颜色值进行更新,形成所述第一像素点的更新像素值,以实现对于所述第一像素点的像素值的更新,依此类推,从所述首添加行开始,按照从左到右,从上到下的方式遍历与所述放置行数对应的各添加行中包含的与所述放置位置数量相同的多个目标像素点,并根据所述指定字节数组中每一个字节的排列顺序,使用所述指定字节数组中的每三个字节对图片内相应行的对应像素点中的三个颜色通道的颜色值进行一一对应的更新,直至完成将所述指定字节数组内包含的所有字节填充至所述图片内;

将所述字符长度填充于所述图片内的指定像素点上,得到目标图片,以完成对于所述图片的水印添加处理。

本领域技术人员可以理解,图3中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的装置、计算机设备的限定。

本申请一实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现一种水印添加方法,具体为:

获取待添加至图片内的目标数据;

对所述目标数据进行字节转换处理,得到对应的原始字节数组;

基于base64的encode方法对所述原始字节数组进行处理,生成指定字节数组;

获取所述指定字节数组中包含的字节的字符长度,并基于所述字符长度,调用预设的计算公式计算出放置位置数量;

获取所述图片的宽度值与高度值;

基于所述放置位置数量与所述宽度值计算出放置行数,并基于所述放置行数与所述高度值确定出用于添加水印的首行信息;

按照所述指定字节数组中每一个字节的排列顺序,依次获取排序最前的第一字节、第二字节与第三字节;

获取与所述首行信息对应的首添加行内排序最前的第一像素点,并基于所述第一像素点的第一像素值,获取所述第一像素点的r通道的第一颜色值、所述第一像素点的g通道的第二颜色值以及所述第一像素点的b通道的第三颜色值;

使用所述第一字节对所述第一颜色值进行更新,使用所述第二字节对所述第二颜色值进行更新,以及使用所述第三字节对所述第三颜色值进行更新,形成所述第一像素点的更新像素值,以实现对于所述第一像素点的像素值的更新,依此类推,从所述首添加行开始,按照从左到右,从上到下的方式遍历与所述放置行数对应的各添加行中包含的与所述放置位置数量相同的多个目标像素点,并根据所述指定字节数组中每一个字节的排列顺序,使用所述指定字节数组中的每三个字节对图片内相应行的对应像素点中的三个颜色通道的颜色值进行一一对应的更新,直至完成将所述指定字节数组内包含的所有字节填充至所述图片内;

将所述字符长度填充于所述图片内的指定像素点上,得到目标图片,以完成对于所述图片的水印添加处理。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的和实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可以包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram通过多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双速据率sdram(ssrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

以上所述仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1