二值图打印数据的处理方法转让专利

申请号 : CN200710198443.6

文献号 : CN101178775B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张磊王毅杨雪峰宾彬

申请人 : 北大方正集团有限公司北京方正阿帕比技术有限公司北京大学

摘要 :

本发明公开了一种二值图打印数据的处理方法,涉及向打印机输出的打印数据处理,解决了透明打印时需要传输的数据量较大,造成打印速度慢的问题。该二值图打印数据的处理方法包括:根据二值图的原始数据生成对应的梯度数据;扫描所述梯度数据,得到需要打印的填充区域;将所述的填充区域输出到打印机。通过上述步骤,可以得到二值图中需要打印的区域,而去除不必要的区域,以减少打印时需要传输的数据,在具有透明效果时,省去了对每个像素的进行直接计算过程,从而提高了打印速度。本发明主要用在能够转化为二值图进行打印输出的场合中,包括一般的黑白打印,彩打中的单色图打印等。

权利要求 :

1.一种二值图打印数据的处理方法,其特征在于包括:按行扫描二值图的原始数据,根据左右相邻像素颜色值的大小关系生成对应的表示图像颜色变化的梯度数据,并将图像右侧边缘像素的梯度值取为其颜色值;

按行扫描所述梯度数据,选出每行梯度数据中表示图像颜色发生变化的区间得到需要打印的填充区域;

将所述的填充区域输出到打印机。

2.根据权利要求1所述的二值图打印数据的处理方法,其特征在于,所述的二值图原始数据包括像素的坐标和像素的颜色值。

3.根据权利要求2所述的二值图打印数据的处理方法,其特征在于:所述梯度数据包括像素的坐标和像素的梯度值,所述梯度值按如下方式生成:如果二值图中像素的坐标为图像的最右侧区域,则该像素的梯度值等于该像素的颜色值;

如果二值图中的像素的颜色值小于其右侧像素的颜色值,则该像素的梯度值取为正梯度;

如果二值图中的像素的颜色值大于其右侧像素的颜色值,则该像素的梯度值取为负梯度;

如果二值图中的像素的颜色值等于其右侧像素的颜色值,则该像素的梯度值取为0。

4.根据权利要求3所述的二值图打印数据的处理方法,其特征在于:所述按行扫描所述梯度数据,选出每行梯度数据中表示图像颜色发生变化的区间得到需要打印的填充区域具体为:按行扫描所述梯度数据,依次记录每行梯度数据中两个相邻正梯度的坐标和负梯度的坐标,并保存为区间;

将所有区间合并,得到需要打印的填充区域。

5.根据权利要求4所述的二值图打印数据的处理方法,其特征在于:所述正梯度坐标右侧相邻点的坐标为区间的起点,所述负梯度的坐标为区间的终点。

6.根据权利要求3所述的二值图打印数据的处理方法,其特征在于:所述颜色值为0或1;所述正梯度为1,所述负梯度为-1。

说明书 :

技术领域

本发明涉及向打印机输出的打印数据,特别涉及打印二值图时,处理需要打印的数据的方法。

背景技术

电子文档在打印输出的时候,文字、图形和图像是最基本的元素,在大部分情况下,文字都可以看作是一幅单色的位图;而图像中,也有很多单色图的存在,比如公文中的公章,在图像中只有一种颜色。以上所述的电子文档中,打印时每个像素都只能取两个可能的图像值,这种图像(包括打印的文字)被称为二值图,在输出打印数据时都可以归结到二值图的处理范畴。
对于具有透明效果的二值图进行打印时,需要对每个像素进行透明处理,例如:将图1中的图像与另一份文件同时打印到一张纸上时,相当于图1中的图像和另一份文件处于不同的两层,需要对两层上图像上的每个像素进行比较,得出每一个像素实际打印效果,即结果位图。
如果直接使用系统提供的绘制函数接口(比如在Windows操作系统中利用系统提供的API直接往打印机输出二值图的打印数据),需要将每一个像素的数据都传输到打印机,这样传输的数据量巨大;在需要做透明处理时,打印机还需要进行每个像素的透明计算,图像的打印数据量和计算量将进一步增大,导致打印速度缓慢,无法满足正常的打印需求。
针对上述透明打印所需要传输的数据量较大的问题,比较常见的解决办法是通过计算机直接计算出透明后的结果位图,然后将这个结果位图的打印数据传输到打印机打印,这样打印机就不需要进行透明效果的处理了,可直接打印结果位图。这种方法虽然可以绕过在打印机上直接进行透明打印的步骤,但是直接计算透明后的结果位图,需要对每一位像素进行计算,往往要消耗很多的计算机资源。

发明内容

本发明提供一种二值图打印数据的处理方法,在需要打印透明效果的二值图像时,简化了计算机打印操作,减少了需要传输的数据量,从而在使用较少计算机资源的情况下提高打印速度。
为达到上述目的,本发明的采用如下技术方案:该二值图打印数据的处理方法包括:
按行扫描二值图的原始数据,根据左右相邻像素颜色值的大小关系生成对应的表示图像颜色变化的梯度数据,并将图像右侧边缘像素的梯度值取为其颜色值;
按行扫描所述梯度数据,选出每行梯度数据中表示图像颜色发生变化的区间得到需要打印的填充区域;
将所述的填充区域输出到打印机。
所述的二值图原始数据包括像素的坐标和像素的颜色值。
所述梯度数据包括像素的坐标和像素的梯度值,所述梯度值按如下方式生成:
如果二值图中像素的坐标为图像的最右侧区域,则该像素的梯度值等于该像素的颜色值;
如果二值图中的像素的颜色值小于其右侧像素的颜色值,则该像素的梯度值取为正梯度;
如果二值图中的像素的颜色值大于其右侧像素的颜色值,则该像素的梯度值取为负梯度;
如果二值图中的像素的颜色值等于其右侧像素的颜色值,则该像素的梯度值取为0。
所述按行扫描所述梯度数据,选出每行梯度数据中表示图像颜色发生变化的区间得到需要打印的填充区域具体为:
按行扫描所述梯度数据,依次记录每行梯度数据中两个相邻正梯度的坐标和负梯度的坐标,并保存为区间;
将所有区间合并,得到需要打印的填充区域。
所述正梯度坐标右侧相邻点的坐标为区间的起点,所述负梯度的坐标为区间的终点。
所述颜色值为0或1;所述正梯度为1,所述负梯度为-1。
相对于现有技术中通过计算机来直接计算出透明后的结果位图而言,本发明二值图打印数据的处理方法不需要对每个像素进行透明计算,只需要得出需要打印的填充区域,省去了透明计算这一庞大的计算量,节约了硬件资源(包括计算机资源和打印机资源)。
本发明通过对二值图的原始数据进行横向扫描获得其梯度数据,再通过对梯度数据的分析,将复杂的透明打印区域转换为相对简单且可以直接打印的填充区域,从而将透明打印转化为普通打印操作。并且,本发明只需要计算出实际打印的区域,对于图像中不需要打印的部分,则直接去除,则不会生成向打印机传输的数据,最后生成数据量比较小而简单的填充区域,可以减少打印时向打印机传输的数据量,从而达到了提高打印速度的目的。
相对于现有技术中通过计算机来直接计算出透明后的结果位图而言,所需要的计算机资源相对较少,只需要对二值图和梯度数据分别遍历一次即可完成填充区域的计算,并不需要对每个像素进行透明效果的数据计算,节省了很多计算机资源。

附图说明

图1为待打印二值图的样例图;
图2为图1的具体颜色值示意图,其中1表示黑色,0表示白色;
图3为扫描图2对应的梯度图得到的梯度值示意图;
图4为扫描梯度图并得到填充区域的具体流程图。

具体实施方式

本发明二值图打印数据的处理方法,通过对二值图的原始数据进行横向扫描获得其梯度数据,由多个连续多个梯度数据组成一幅梯度图,再通过对梯度图的分析,将复杂的透明打印区域转换为相对简单且可以直接打印的填充区域。
下面结合附图和实施例对本发明二值图打印数据的处理方法详细描述。
在本实施例中,需要打印的图像如图1所示,在图像中只有中间的黑色部分需要打印,其他部分为空白,为了方便计算机的读取和识别,在其二值图上一般用1表示黑色,0表示白色。故而,假若以像素的颜色值来表示图1,那么其像素对应的二值图如图2所示,而每一个像素所在的位置可以通过该位置的坐标来表示,一般用坐标的x轴来表示图像的横向坐标,y轴来表示图像的纵向坐标,记为(x,y)。
本发明在处理二值图的打印数据时,具体需要执行如下步骤:
根据二值图的原始数据生成对应的梯度数据,其中,二值图原始数据是指图2中对应每个像素的坐标值和颜色值。而生成的梯度数据包括梯度值,并且还是用原来图2中像素的坐标来描述梯度值的位置。
下面具体描述梯度值的生成过程。
扫描图2中的每一个像素,假若当前像素的坐标为(x,y),首先通过该像素的坐标值来判断该像素是否为图像最右侧的区域,如果该像素的坐标为图像的最右侧区域,则该像素的梯度值等于该像素的颜色值;如果该像素的坐标不是图像的最右侧区域,那么按照如下规则给梯度值赋值:
如果二值图中的像素的颜色值小于其右侧像素的颜色值,即(x,y)处的颜色值为0,而(x,y+1)处的颜色值为1,则该像素的梯度取为正梯度,以数值1来表示。
如果二值图中的像素的颜色值大于其右侧像素的颜色值,即(x,y)处的颜色值为1,而(x,y+1)处的颜色值为0,则该像素的梯度取为负梯度,,以数值-1来表示;
如果二值图中的像素的颜色值等于其右侧像素的颜色值,即(x,y)处的颜色值为1,而(x,y+1)处的颜色值也为1;或者(x,y)处的颜色值为0,而(x,y+1)处的颜色值也为0;那么该像素的梯度值取为0。
经过上述扫描过程,将为每一个像素点生成一个梯度值,本实施例中对应图2的剃度图如图3所示。
得到图3所示的梯度图后,对其进行扫描并得到需要打印的填充区域,其具体过程如图4所示:
401、读入如图3所示的梯度图数据,包括每个点的坐标和梯度值,并将当前行指针指向该梯度图数据的第一行。
402、从行指针位置读取一行数据,并设置当前点指针指向当前行起点,一般通过该点的坐标来表示其位置。
403、读取当前点坐标指针中的数据。
404、分析当前点坐标指针中的数据:如果当前点坐标指针中的数据为0,则执行步骤407;如果当前点坐标指针中的数据为1,即该点的梯度为正梯度,则执行步骤405;如果当前点坐标指针中的数据为-1,即该点的梯度为负梯度,则执行步骤406。
405、存储当前点右侧点的坐标为一个区间的起点,如果当前点坐标为(x,y),则存储点(x+1,y)为一个区间的起点,并执行步骤407。
406、存储当前点坐标为一个区间的终点,如果当前点坐标为(x,y),则存储点(x,y)为一个区间的终点,并执行步骤407。
407、当前坐标点指针右移一位,即将(x+1,y)作为当前点坐标:
判断(x+1,y)是否为图像最右侧的区域,即,当前点是否为当前行的末尾;如果到达当前行数据末尾,则进入步骤408;如果没有到达当前行数据末尾,则进入步骤403。
408、当前行指针下移一行,然后判断是否到达梯度图的数据末尾,如果到达梯度图数据末尾,则执行步骤409;如果没有到达梯度图数据末尾,则执行步骤402。
409、将所有由起点和终点描述的区间合并,一起保存为填充区域,以便输出到打印机进行打印。
将上面步骤中获取的填充区域发送到打印机,进行打印。
在上述实施例中,通过对二值图的原始数据进行横向扫描获得其梯度图,再通过对梯度图的分析,将复杂的打印区域转换为相对简单且可以直接打印的填充区域。并且,本发明只需要计算出实际打印的区域,对于图像中不需要打印的部分,则直接去除,则不会生成向打印机传输的数据,最后生成数据量比较小而简单的填充区域,可以减少打印时向打印机传输的数据量,从而达到了提高打印速度的目的。
由于在步骤405和步骤406中只需要记录区间的首末位置,这样一来需要保存的数据量将进一步减少,以提高打印速度。
当将图1上的图像和另一份文件同时打印时,在图1白色部分是作为另一份文件的透明部分,采用本发明后,不需要将图1和另一份文件上对应的每个像素进行比较来得出实际打印效果,只需要按照本发明的方法将另一份文件的打印区域输出到打印机,然后将图1中的打印区域输出到打印机,而没有打印的区域就可以直接实现透明效果。所以,采用本发明后能够节省了很多计算机资源或者打印机资源。
本发明主要用在能够转化为二值图进行打印输出的场合中,包括一般的黑白打印,彩打中的单色图打印等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。