正如示意性的附图中所示,本发明是在包括一台主计算机和一个喷墨打印机的系统中体现的。打印机包括一个具有打印机控制器和幅数据缓冲器的ASIC。由主计算机产生的压缩的幅数据被发送给打印机并且存储在幅缓冲器中。打印机控制器传输过程中对幅数据解压缩,并且打印所得的无压缩的幅数据。只要是ASIC的模具尺寸没有明显的增加,在ASIC上嵌入幅缓冲器就比提供单独封装的缓冲器要便宜。压缩数据可以使缓冲器容量只占用来存储无压缩的幅数据的缓冲器容量的一小部分。如果在幅缓冲器中装不下代表一整幅的压缩数据,不能在一幅中打印的那些行还可以在接下来的一幅中打印。这样就不会影响打印质量。除了能降低打印机成本之外,嵌入的缓冲器还可以提高打印机控制器存取压缩数据的速度。
图1表示包括一台主计算机12和一个喷墨打印机14的一种计算机系统10。打印机14包括为每一种打印颜色设有至少一个记录头18的一个打印头16。典型的三色打印头的打印颜色是蓝绿,紫红和黄。每个记录头18至少包括一列喷嘴。可以单独地激励每个喷嘴在纸上投放一种颜色的墨点。例如,一个典型的三色打印头16可以在一张白纸上的任何一处投放蓝绿、紫红、黄墨点,配合着产生以下八种颜色当中的任何颜色:黑,蓝,红,绿,紫红,蓝绿,黄和白。
打印机14进一步包括一个送纸路径20,用于通过打印机14和机构22(例如是一个步进电机,轨道和输送机构)进纸,所述机构用于在打印机14送纸的同时在纸面上往复移动打印头16。打印机14还包括一个印刷电路板24和安装在印刷电路板24上的ASIC26。ASIC26包括一个嵌入的幅数据缓冲器28,用来存储压缩的幅数据,以及一个打印机控制器30(例如是一个嵌入的处理器和存储着处理器软件的嵌入式只读存储器),用来控制压缩的幅数据进入缓冲器28的流程,将幅缓冲器28的内容解压缩成无压缩的幅数据,并且用无压缩的幅数据激励打印头16上的喷嘴。打印机控制器30还控制着纸路20和往复移动机构22。
代表一整幅无压缩数据的字节数取决于不同的参数,这其中包括打印机分辨率,彩色图面的数量(也就是打印颜色的数量),每种彩色图面的记录头数量,每个记录头的喷嘴数量,以及幅的长度。如果打印机的画面是八英寸幅,分辨率为300dpi,并且具有三色打印头,每一种彩色图面包括一个记录头,每个记录头有一列喷嘴,每一列有200个喷嘴,代表一整幅的无压缩数据量就是1440000位/8=180K字节。
幅缓冲器28具有Z字节的数据存储容量,它比代表一整幅的无压缩数据量要小。也就是Z<Y,而Y是代表一整幅没有压缩的幅数据的字节数。
幅缓冲器28的实际大小取决于幅数据被压缩的目标比例。如果幅数据的目标压缩比例是X∶1,幅缓冲器28的存储容量大约应该是Z=X/Y字节。这样,如果按照3∶1的目标比例压缩幅数据,幅缓冲器就可以从180K字节缩小到60K字节。由打印机控制器30执行的解压缩类型取决于计算机12所执行的压缩类型。
打印机输入/输出(“I/O”)也是由打印机控制器30来控制的。打印机I/O包括在幅缓冲器28被清空时向主计算机12发信号。打印机14通过一条双向线路31和计算机12进行通信。
计算机12包括一个处理器32和计算机存储器34。在计算机存储器34中存储打印机驱动器36,许多可执行指令,在需要时用来指令处理器32插入一个符合打印机分辨率的图像;并且产生代表这一插入图像的墨点图形的二进制位图。打印机驱动器36还指令处理器32压缩这一二进制位图,并且将压缩位图数据的各个幅(完整或是部分地)传送给打印机14。
图2表示由计算机12产生一个墨点图形,发送给打印机14,并且由打印机14打印的一种方法。首先,打印机驱动器36将一个图像文件转换成代表墨点图形的二进制位图(框102)。图像文件通常是用n-位字的RGB彩色空间来体现的。每个n-位字对应着图像的一个象素。如果需要,打印机驱动器36就插入图像文件,用打印图像中的至少一个墨点代表图像中的每一个象素。墨点的总数取决于打印机分辨率,图像的尺寸,打印头16的参数等等。打印机驱动器36可以分别将图像文件插入各个打印彩色图面中。对于三色打印来说,就是将图像文件分开插入三个彩色图面(也就是蓝绿、紫红和黄彩色图面)。如果图像文件中的字代表红,绿和蓝色图面,并且打印颜色是蓝绿、紫红和黄,打印机驱动器36还要将其转换成蓝绿、紫红和黄色分量。然后为单独的彩色图面提供振动掩模(dither mask)。由振动掩模的平面形成三种墨点图面。
接着,打印机驱动器36确定可以装入打印机14的幅缓冲器28中的幅数据压缩行的数量(框104)。事先为打印机驱动器36提供幅缓冲器28的容量。幅缓冲器28通常会被一整幅的数据填满。然而,并不一定能达到压缩的目标比例。有时候,压缩比例会低于目标比例,这时,幅缓冲器28就会被仅仅代表局部幅(即降低高度的幅)的数据填满。计算机12也会通知打印机14所传输的数据是代表一整幅还是局部幅。
打印机驱动器36开始压缩每种彩色图面的完整的行(框106)。将这些行彼此独立地编码,并且可以同时进行编码。压缩不仅限于任何特定的形式。然而需要采用无损压缩,因为丢失数据会使打印图像的质量下降。无损压缩算法可以按照2∶1到3∶1的比例压缩幅数据。可供使用的一种无损压缩算法是行程编码(“RLE”)。
如果打印机驱动器36已经确定了只能缓冲一个局部幅,打印机驱动器36就为压缩的数据加上能够让打印机控制器30确定每一行的起点的信息(框108)。例如,打印机驱动器36可以为每一行增加一个偏移位。增加偏移位可以使打印机控制器30逐行跳跃,并且恢复无压缩幅数据的列。如果压缩/解压缩方案中已经提供了每个压缩行起点的指示信息,就不需要添加偏移位了。
在压缩完一整行之后,就将其传送给打印机14(框110)。打印机驱动器36可以交错三色图面的行,或者是按顺序传送图面,这是由打印机14的设置所决定的。例如可以将幅缓冲器28分区,每个分区存储一种彩色图面。
在向打印机14传送这些行的同时,打印机驱动器36对存入幅缓冲器28的数据量保持跟踪。打印机驱动器36连续压缩和传送完整的行,直至达到幅缓冲器的容量,或者是一直到传送完代表一整幅的所有数据(框112)。
一旦达到了幅缓冲器容量,或者是已经传送了一个完整的幅,打印机驱动器36就停止压缩和传送这些行,并且等待打印机通信指示幅缓冲器28已经被清空(框114)。
在幅缓冲器28已经被填满之后,或者是在已经缓冲了一个完整的幅之后,打印机控制器30就对幅缓冲器28的内容解压缩,并且马上用解压缩的内容激励打印头16上的记录头喷嘴18(框116)。可以对这些内容逐列地解压缩。如果仅仅缓冲了局部数据幅,打印机控制器30可以使用偏移位从一行跳到下一行,并且逐列地恢复出幅数据。
在所有缓冲的幅数据都已经被解压缩并且用来激励喷嘴之后,打印机控制器30就指令纸路28将纸推进已经打印的行数(框118)。如果所有行都打印完了,打印机控制器30就指令纸路20将纸推进一个额定的距离(也就是一整幅的高度)。如果仅仅打印了200行中的150行,打印机控制器30就指令纸路将纸推进到额定距离的75%。
打印机控制器30还要传送对一个新幅的请求(框120)。这一请求被传送给计算机12。
计算器12在入口点A接收这一请求,确定能够装入幅缓冲器28中的新的一幅数据的行数(框104),并且再次开始压缩这些行(框106)。打印机控制器30接着存储在打印机缓冲器中的最后一行开始继续压缩剩下的行。这样就能在下一幅中打印前一幅中没有打印的行。因此,打印图像的质量不会变劣。
打印机驱动器36向打印机14连续传送各个幅,并且由打印机14连续打印这些幅,直至打印完整个图像(框122)。
以下要参照图3说明打印一个局部幅的情况。第一个完整的幅是由第一个非阴影区B1中压缩的行和阴影区B2中压缩的行构成的。第一幅中在非阴影区B1中压缩的行被传送给打印机14并且由打印机14打印。在阴影区B2中压缩的行本来也是应该打印的,但是由于达不到压缩比例而没有打印。因此,实际打印出的只有一个局部幅,而纸仅仅推进到实际打印的幅的高度。
在下一幅中打印阴影区B2中压缩的行。如果阴影区B2中和第二个非阴影区B3中压缩的行是按照目标比例压缩的,就会打印出包括阴影区B2和第二非阴影区B3中的行在内的一整幅。由于纸仅仅推进到实际已经打印的幅的高度,幅数据不会丢失。因此,打印图像的质量没有损失。
参见图4,图中表示了另一种产生,传送和打印一个墨点图形的方法。打印机驱动器36将一个图像文件转换成代表一个墨点图形的二进制位图(框202)。然而,打印机驱动器36接着并不需要确定可以装入幅缓冲器28中的幅数据的压缩的行数;这项工作是由打印机控制器30来执行的。
打印机驱动器36开始压缩每一个彩色图面(框204)。在压缩的行中添加信息,让打印机控制器30能够逐行跳跃并且恢复出无压缩幅数据的各个列。在压缩完一整行之后将其传送给打印机14(框206)。
打印机控制器30接收并且缓冲压缩的行(框208)。打印机控制器30还监视幅缓冲器28,确定它是不是满的(框210)。如果能达到压缩的目标比例,就缓冲一整幅压缩的数据,缓冲的数据经过解压缩打印出一个完整的幅(框212和214)。
如果没有达到压缩的目标比例,幅缓冲器28在一整幅的所有压缩数据都得到缓冲之前就被装满了。当幅缓冲器28被装满时(框216),打印机控制器30就通知计算机12停止压缩和传送幅数据行(框218)。打印机控制器30还要对缓冲器的内容解压缩并且打印出一个局部的幅(框220)。
在打印出局部的幅之后,打印机控制器30不指令纸路20推进纸。这样,纸路20就不会推进纸。然而,打印机控制器30要请求计算机12传送剩下的幅(框222)。
计算机12同意压缩这一幅中剩下的行,并且将压缩的行传送给打印机14(框224)。
打印机控制器30接收,缓冲并且解压缩剩下的行,并且在第二轮中打印出剩下的行(框226)。这样就能分两轮打印出一个完整的幅。
打印机驱动器36连续向打印机14传送各个幅,并且由打印机14连续打印这些幅,直至打印出完整的图像(框228)。
以下要参照图3说明分两轮打印出一个完整幅的情况。如果第一完整幅的所有压缩的行都可以装入幅缓冲器28(也就是说,在第一个非阴影区B1和阴影区B2中所有压缩的行都可以装入幅缓冲器28),就能在第一轮中打印出完整的第一幅。然而,如果仅仅是第一非阴影区B1中压缩的行就装满了幅缓冲器28,在第一轮中就只能打印出一个局部的幅。在打印完局部幅之后不推进纸,在第二轮期间打印出第一完整幅中剩下的行(也就是处在阴影区B2中的压缩的行)。
如果纸路20能够将纸仅仅推进到一整幅的高度,也可以采用另一种方法。
这里要说的是一种具有嵌入式打印机控制器和嵌入式幅缓冲器的ASIC。只要是缓冲器足够小而不会明显地影响到ASIC的模具尺寸,在ASIC上嵌入幅缓冲器比提供单独封装的幅缓冲器要便宜。除了能降低打印机的成本之外,嵌入式缓冲器还能提高打印机控制器存取压缩数据的速度。
本发明并非仅限于以计算机做为主机。主机可以是任何能够向打印机传送幅数据的机器。例如,这种主机可以包括向打印机传送幅数据的专用ASIC。这种主机可以是一台数字摄像机。
打印头并非仅限于三种打印颜色。它可以采用任何数量的打印颜色。
主机可以向打印机传送无压缩的数据。打印机控制器可以压缩幅数据,并且将压缩的幅数据存储在幅缓冲器中。
打印机可以检查装满的缓冲器,在幅缓冲器被充满时通知主机,并且将纸仅仅推进到实际打印的幅的高度。剩下的行可以在下一幅中打印。
或者是可以用主机检查装满的缓冲器,在幅缓冲器被充满时通知打印机。打印机的响应是打印出局部的幅,但是在打印完局部的幅之后并不推进纸。主机会将这一幅中剩下的行传送给打印机,由打印机在第二轮中打印这一幅中剩下的行。
如果是打印一个完整的幅,打印机并非仅限于将纸推进到一整幅的高度。为了获得更高的打印质量,打印机可以按照多轮打印模式工作。即使是打印一个完整的幅,这种打印机也能够仅仅将纸推进到一幅的一小部分。
上述的打印机控制器是嵌入ASIC中的一个处理器和ROM。然而,打印机控制器并非仅限于此。例如,打印机控制器可以是在一个单独的芯片上嵌入ASIC和ROM的一个处理器。另一种情况是,处理器、ROM和缓冲器分别在三个独立的芯片上。另一种情况是,打印机控制器可能是代替打印机和ROM的一种状态机器。
上述的打印机I/O是由打印机控制器来执行的。然而,打印机I/O也可以由一个独立芯片上的一个I/O模块来执行。
幅缓冲器并非仅限于任何特定型号的存储器。例如,幅缓冲器也可以使用静态随机存储器(“SRAM”)。
上述的幅缓冲器是单个的缓冲器。然而也可以为每一种彩色图面提供单独的缓冲器。
为了在成本和性能之间达成折衷,可以调整幅缓冲器的实际大小。越大的幅缓冲器就越贵,但是更容易缓冲一整幅的数据。
因此,本发明并非仅限于上述的具体实施例。本发明的范围是由以下的权利要求书构成的。