发明内容
本发明的第一目的是提供一种提高点阵打印机打印矢量数据质量的打印数据处理方法。
本发明的第二目的是提供一种提高点阵打印机打印矢量数据质量的打印数据处理装置。
本发明的第三目的是提供一种提高点阵打印机打印矢量数据质量的计算机装置。
本发明的第四目的是提供一种提高点阵打印机打印矢量数据质量的存储介质。
为了实现上述第一目的,本发明提供的打印数据处理方法包括:获取矢量打印数据;对矢量打印数据中的矢量图片和矢量字符分别进行点阵转换,获得点阵打印数据;向打印机发送点阵打印数据。对矢量打印数据中的矢量图片和矢量字符分别进行点阵转换,包括:获取矢量字符对应的字符轮廓;以预设尺寸对字符轮廓进行缩放,获得以像素为单位的字符轮廓的坐标;根据坐标对字符轮廓进行光栅化处理;生成矢量字符对应的点阵字符。
由上述方案可见,本发明的打印数据处理方法在进行矢量数据打印前,先将矢量数据转换成点阵数据,使需要打印的数据符合点阵打印机的打印参数设置,从而提高点阵打印机打印矢量数据的打印质量。此外,打印数据包括图片数据和/或文字数据,通过分别对矢量图片和矢量字符的点阵转换,不同类型的数据采用不同的转换方式,使点阵打印机打印的出来的矢量字符和矢量图片更加清晰,质量更佳。另外,在进行矢量字符的点阵转换时,首先获取矢量字符中字符所对应的字符轮廓,并对字符的字符轮廓进行缩放处理,获得缩放处理后的坐标,获得坐标信息后对字符所对应的字符轮廓进行光栅化处理,从而生成矢量字符对应的点阵字符。通过对字符的字符轮廓进行缩放处理,可获得字符在打印时所需的坐标数据,使字符的大小更符合打印的要求。另外通过对字符的字符轮廓进行光栅化处理,使高分辨率的矢量数据转化为低分辨率的点阵数据,使得矢量数据更符合点阵打印机的打印参数。
进一步的方案中,根据坐标对字符轮廓进行光栅化处理,包括:获取字符轮廓与以像素为单位的栅格的交点坐标;根据预设规则对字符轮廓进行像素填充,获得光栅化的字符。
由此可见,在对字符轮廓进行光栅化时,首先确定字符轮廓与以像素为单位的栅格的交点坐标,从而判断字符轮廓在以像素为单位的栅格中的分布情况,确定每一个像素栅格落入字符轮廓中的面积,从而可使用预设规则对字符轮廓进行像素填充,获得光栅化的字符。
进一步的方案中,对矢量打印数据中的矢量图片和矢量字符分别进行点阵转换,包括:将矢量图片进行灰度化处理,获得灰度化图片;对灰度化图片进行二值化处理,获得二值化图片;对二值化图片进行高斯滤波;将滤波后的二值化图片转化成点阵图片。
由此可见,在对矢量图片进行点阵转换时,将矢量图片转换成灰度化图片,并对灰度化图片进行二值化处理,可便于将矢量图片转化成点阵图片,对二值化后的图片进行滤波课时二值化图片更加平滑,减少失真度,从而可提高矢量图片转换成点阵图片的质量。
为了实现上述第二目的,本发明提供的打印数据处理装置包括:数据获取模块,用于获取矢量打印数据;数据转换模块,用于对矢量打印数据中的矢量图片和矢量字符分别进行点阵转换,获得点阵打印数据;数据发送模块,向打印机发送点阵打印数据。数据转换模块对矢量打印数据中的矢量图片和矢量字符分别进行点阵转换,包括:获取矢量字符对应的字符轮廓;以预设尺寸对字符轮廓进行缩放,获得以像素为单位的字符轮廓的坐标;根据坐标对字符轮廓进行光栅化处理;生成矢量字符对应的点阵字符。
由上述方案可见,本发明的打印数据处理装置在进行矢量数据打印前,先将矢量数据转换成点阵数据,使需要打印的数据符合点阵打印机的打印参数设置,从而提高点阵打印机打印矢量数据的打印质量。此外,打印数据包括图片数据和/或文字数据,通过分别对矢量图片和矢量字符的点阵转换,不同类型的数据采用不同的转换方式,使点阵打印机打印的出来的矢量字符和矢量图片更加清晰,质量更佳。
为了实现上述第三目的,本发明提供的计算机装置包括有处理器,该处理器用于执行存储器中存储的计算机程序时实现上述的打印数据处理方法的各个步骤。
为了实现上述第四目的,本发明提供的存储介质,其上存储有计算机程序,且计算机程序被处理器执行时实现上述的打印数据处理方法的各个步骤。
具体实施方式
本发明的打印数据处理方法应用于可与点阵打印机进行数据传输的智能终端设备上,优选的,智能终端设备包括台式电脑、笔记本电脑、平板电脑、手机等智能终端设备。打印数据处理方法可实现将矢量数据转换成点阵数据,并发送至点阵数据发送至点阵打印机进行打印。本发明的打印数据处理装置应用于可与点阵打印机进行数据传输的智能终端设备上,并且用于实现上述的打印数据处理方法。并且,本发明还提供一种计算机装置,该计算机装置包括有处理器,处理器可以执行应用程序的指令,从而实现上述打印数据处理方法的各个步骤。本发明的提供的存储介质上存储有计算机程序,且计算机程序被处理器执行时实现上述的打印数据处理方法的各个步骤。
打印数据处理方法实施例:
如图1,本发明的打印数据处理方法在进行打印数据处理时,首先执行步骤S1,获取矢量打印数据。在进行矢量打印数据处理时需进行矢量打印数据的获取。获取矢量打印数据可通过数据导入的方式获取,或者通过编辑的方式获取。例如,在软件的编辑界面通过点击导入打印数据打印的虚拟按键将需要打印的文字或图片的打印数据导入,从而获得矢量打印数据;或者通过在软件的编辑界面进行文字和图片的编辑,完成编辑后获得矢量打印数据。
获取矢量打印数据后,执行步骤S2,对矢量打印数据中的矢量图片和矢量字符分别进行点阵转换,获得点阵打印数据。为了使矢量数据能够在点阵打印机中的打印效果更好,在进行打印前,需将矢量打印数据转换成点阵数据,使得需打印的数据更符合点阵打印机的参数设置。其中,矢量打印数据中包括矢量图片和/或矢量字符,因此在进行点阵转换时,需要分别对矢量图片和对矢量字符进行点阵转换。
对矢量打印数据中的矢量图片和矢量字符分别进行点阵转换的步骤包括:将矢量图片进行灰度化处理,获得灰度化图片;对灰度化图片进行二值化处理,获得二值化图片;对二值化图片进行高斯滤波;将滤波后的二值化图片转化成点阵图片。
在执行将矢量图片进行灰度化处理的步骤时,利用彩色图RGB像素转灰度的算法进行灰度化处理,其中,彩色图RGB像素转灰度的算法为本领域技术人员的公知常识,在此不再赘述。获得灰度化图片后,对灰度化图片进行二值化处理,在进行二值化处理时,可利用现有已知的二值化算法进行,在此不再赘述,本实施例中,利用Floyd-steinberg抖动算法进行二值化。
获得二值化图片后,对二值化图片进行高斯滤波。本实施例中,利用本领域技术人员公知的二维高斯函数进行高斯滤波,二维高斯函数为:
其中,x,y为像素坐标,σ为高斯分布的标准差。进行高斯滤波时,可对高斯分布的标准差进行设定,从而利用高斯函数构建权重矩阵,并利用权重矩阵计算二值化图片中所有像素点的灰度值,从而获得滤波后的二值化图片。
例如,设定σ=1,通过高斯函数计算每个像素点的权重值并加权平均,得出滤波半径为1的权重矩阵如下:
0.07511361 |
0.12384140 |
0.07511361 |
0.12384140 |
0.20417996 |
0.12384140 |
0.07511361 |
0.12384140 |
0.07511361 |
假设每个像素点的灰度值如下:
11 |
12 |
13 |
35 |
36 |
37 |
18 |
19 |
20 |
每个像素点的灰度值乘以权重矩阵中对应的权重值,得到中心像素点的高斯滤波的灰度值:
0.82624969 |
1.486096838 |
0.976476903 |
4.33444911 |
7.350478401 |
4.582131917 |
1.35204494 |
2.35298666 |
1.502272159 |
对所有像素点重复上述步骤,则可得到高斯滤波后的图像。
另外,对矢量打印数据中的矢量图片和矢量字符分别进行点阵转换的步骤还包括:获取矢量字符对应的字符轮廓;以预设尺寸对字符轮廓进行缩放,获得以像素为单位的坐标;根据坐标对字符轮廓进行光栅化处理;生成矢量字符对应的点阵字符。
获取的矢量打印数据中包括有矢量字符,因此,在进行矢量字符的点阵转换时,首先获取矢量字符对应的字符轮廓。每一个矢量字体的字形是通过数学曲线来描述的,它包含了字形边界上的关键点,连线的导数信息等,可通过获取这些数学矢量,则可得到矢量字符对应的字符轮廓。
本实施例中,通过GetGlyphOutline函数获取矢量字符对应的字符轮廓。以TrueType矢量文字为例,TrueType文件结构有如下常用的信息:
head |
字体头:字体的全局信息 |
cmap |
字符代码到图元的映射,把字符代码映射为图元索引 |
glyf |
图元数据:图元轮廓定义以及网格调整指令 |
maxp |
最大需求表:字体中所需内存分配情况的汇总数据 |
loca |
位置表索引:把元索引转换为图元的位置 |
name |
命名表:版权说明、字体名、字体族名、风格名等等 |
hhea |
水平布局信息 |
hmtx |
水平量度信息 |
post |
所有图元的PostScript FontInfo目录项和PostScript名 |
OS/2 |
OS/2和Windows特有的规格 |
在获取轮廓信息时,需确定矢量字符的编码方式(如以国家标准GB18030的编码方式),根据编码方式获取矢量字符对应的编码值。接着根据编码值查询代码映射表获得矢量字符对应的索引号,最后根据索引号通过GetGlyphOutline函数获取字符轮廓的起始位置以及轮廓信息等,从而获得矢量字符对应的轮廓信息。利用GetGlyphOutline函数获取字符轮廓为本领域技术人员公知技术,在此不再赘述。
获取到矢量字符对应的字符轮廓后,以预设尺寸对字符轮廓进行缩放,获得字符轮廓以像素为单位的坐标。预设尺寸可根据打印机的分辨率和字符需要打印的大小进行设置。例如,打印机分辨率为180dpi和字符需要打印的大小为14.5磅,则将字符的字符轮廓缩放成14.5磅字体的字符轮廓,将缩放后的字符轮廓置于每英寸180个像素的栅格内,从而获得字符轮廓所占用的像素的坐标。
获得字符轮廓以像素为单位的坐标后,根据坐标对字符轮廓进行光栅化处理。根据坐标对字符轮廓进行光栅化处理的步骤包括:获取字符轮廓与以像素为单位的栅格的交点坐标;根据预设规则对字符轮廓进行像素填充,获得光栅化的字符。获取到的轮廓信息中包括轮廓点坐标以及描述轮廓的贝塞尔线和直线段等信息。在进行光栅化处理时,字符轮廓放置于以像素为单位的栅格中,字符轮廓与栅格存在交点,获取交点坐标。获取交点坐标后,根据预设规则对字符轮廓进行像素填充,则可获得光栅化的字符。预设规则可以由程序开发人员设置,也可以由用户进行设置,本实施例中,参见图2,字符“沿”的字符轮廓放置在以像素为单位的栅格中,当某一像素点落在字符轮廓内的面积大于该像素点一半的面积时,则对该像素点进行填充为黑色。
对字符轮廓进行光栅化处理,获得光栅化的字符后,生成矢量字符对应的点阵字符。在对光栅化的字符轮廓进行点阵转化时,对放置有字符轮廓的以像素为单位的栅格进行扫描,当扫描到的像素点是填充像素点时,则将其表示为“1”,当扫描到的像素点不是填充像素点时,则将其表示为“0”,从而获得字符的点阵数据。
获得点阵打印数据后,执行步骤S3,向打印机发送状态确认指令,确认打印机处于正常工作状态。可选的方案中,向打印机发送状态确认指令之前,判断是否与点阵打印机的端口连接成功。可通过向打印机端发送检测信号,并通过是否接收到应答信号来判断是否与点阵打印机成功连接。在连接成功时,向打印机发送查询状态命令,获取打印机当前的运行状态,确认打印机正常工作。打印机状态查询为本领域技术人员的公知技术,在此不再赘述。
在确认打印机正常工作后,执行步骤S4,向打印机发送点阵打印数据。点阵打印机接收到打印数据后可对打印数据进行打印。
需要说明的是,步骤S3可在步骤S1之前执行,在确认打印机可正常工作后才对矢量打印数据进行点阵转换处理。例如,在编辑界面点击打印的虚拟按键后,首先向点阵打印机发送状态确认指令,确认打印机处于正常工作状态后,在获取矢量打印数据进行点阵转换,转换获得点阵打印数据后将其发送至打印机进行打印。
打印数据处理装置实施例:
如图3,本发明的打印数据处理装置包括数据获取模块1、数据转换模块2、状态确认模块3以及数据发送模块4。
数据获取模块1用于获取矢量打印数据。在进行矢量打印数据处理时需进行矢量打印数据的获取。数据获取模块1获取矢量打印数据可通过数据导入的方式获取,或者通过编辑的方式获取。例如,在软件的编辑界面通过点击导入打印数据打印的虚拟按键将需要打印的文字或图片的打印数据导入,从而获得矢量打印数据;或者通过在软件的编辑界面进行文字和图片的编辑,完成编辑后获得矢量打印数据。
数据转换模块2用于对矢量打印数据中的矢量图片和矢量字符分别进行点阵转换,获得点阵打印数据。为了使矢量数据能够在点阵打印机中的打印效果更好,在进行打印前,数据转换模块2需将矢量打印数据转换成点阵数据,使得需打印的数据更符合点阵打印机的参数设置。其中,矢量打印数据中包括矢量图片和/或矢量字符,因此在进行点阵转换时,需要分别对矢量图片和对矢量字符进行点阵转换。
数据转换模块2对矢量打印数据中的矢量图片和矢量字符分别进行点阵转换的步骤包括:将矢量图片进行灰度化处理,获得灰度化图片;对灰度化图片进行二值化处理,获得二值化图片;对二值化图片进行高斯滤波;将滤波后的二值化图片转化成点阵图片。
数据转换模块2在执行将矢量图片进行灰度化处理的步骤时,利用彩色图RGB像素转灰度的算法进行灰度化处理,其中,彩色图RGB像素转灰度的算法为本领域技术人员的公知常识,在此不再赘述。获得灰度化图片后,数据转换模块2对灰度化图片进行二值化处理,在进行二值化处理时,可利用现有已知的二值化算法进行,在此不再赘述,本实施例中,利用Floyd-steinberg抖动算法进行二值化。
获得二值化图片后,数据转换模块2对二值化图片进行高斯滤波。本实施例中,利用本领域技术人员公知的二维高斯函数进行高斯滤波,二维高斯函数为:
其中,x,y为像素坐标,σ为高斯分布的标准差。进行高斯滤波时,可对高斯分布的标准差进行设定,从而利用高斯函数构建权重矩阵,并利用权重矩阵计算二值化图片中所有像素点的灰度值,从而获得滤波后的二值化图片。
另外,数据转换模块2对矢量打印数据中的矢量图片和矢量字符分别进行点阵转换的步骤还包括:获取矢量字符对应的字符轮廓;以预设尺寸对字符轮廓进行缩放,获得以像素为单位的坐标;根据坐标对字符轮廓进行光栅化处理;生成矢量字符对应的点阵字符。
获取的矢量打印数据中包括有矢量字符,因此,数据转换模块2在进行矢量字符的点阵转换时,首先获取矢量字符对应的字符轮廓。每一个矢量字体的字形是通过数学曲线来描述的,它包含了字形边界上的关键点,连线的导数信息等,可通过获取这些数学矢量,则可得到矢量字符对应的字符轮廓。本实施例中,通过GetGlyphOutline函数获取矢量字符对应的字符轮廓,利用GetGlyphOutline函数获取字符轮廓为本领域技术人员公知技术,在此不再赘述。
数据转换模块2获取到矢量字符对应的字符轮廓后,以预设尺寸对字符轮廓进行缩放,获得字符轮廓以像素为单位的坐标。预设尺寸可根据打印机的分辨率和字符需要打印的大小进行设置。例如,打印机分辨率为180dpi和字符需要打印的大小为14.5磅,则将字符的字符轮廓缩放成14.5磅字体的字符轮廓,将缩放后的字符轮廓置于每英寸180个像素的栅格内,从而获得字符轮廓所占用的像素点的坐标。
数据转换模块2获得字符轮廓以像素为单位的坐标后,根据坐标对字符轮廓进行光栅化处理。数据转换模块2根据坐标对字符轮廓进行光栅化处理的步骤包括:获取字符轮廓与以像素为单位的栅格的交点坐标;根据预设规则对字符轮廓进行像素填充,获得光栅化的字符。获取到的轮廓信息中包括轮廓点坐标以及描述轮廓的贝塞尔线和直线段等信息。数据转换模块2在进行光栅化处理时,字符轮廓放置于以像素为单位的栅格中,字符轮廓与栅格存在交点,获取交点坐标。获取交点坐标后,根据预设规则对字符轮廓进行像素填充,数据转换模块2则可获得光栅化的字符轮廓。预设规则可以由程序开发人员设置,也可以由用户进行设置,本实施例中,参见图2,字符“沿”的字符轮廓放置在以像素为单位的栅格中,当某一像素点落在字符轮廓内的面积大于该像素点一半的面积时,则对该像素点进行填充为黑色。
数据转换模块2对字符轮廓进行光栅化处理后,生成矢量字符对应的点阵字符。在对光栅化的字符轮廓进行点阵转化时,对放置有字符轮廓的以像素为单位的栅格进行扫描,当扫描到的像素点是填充像素点时,则将其表示为“1”,当扫描到的像素点不是填充像素点时,则将其表示为“0”,从而获得字符的点阵数据。
状态确认模块3用于向打印机发送状态确认指令,确认打印机处于正常工作状态。可选的方案中,状态确认模块3向打印机发送状态确认指令之前,判断是否与点阵打印机的端口连接成功。状态确认模块3可通过向打印机端发送检测信号,并通过是否接收到应答信号来判断是否与点阵打印机成功连接。在连接成功时,状态确认模块3向打印机发送查询状态命令,获取打印机当前的运行状态,确认打印机正常工作。打印机状态查询为本领域技术人员的公知技术,在此不再赘述。
数据发送模块4用于向打印机发送点阵打印数据。点阵打印机接收到打印数据后可对打印数据进行打印。
计算机装置实施例:
本实施例的计算机装置包括:处理器、存储器以及存储在存储器中并可在处理器上运行的计算机程序,例如查询和交互程序。处理器执行计算机程序时实现上述打印数据处理方法实施例中的步骤。或者,处理器执行计算机程序时实现上述打印数据处理装置实施例中各模块的功能。
例如,计算机程序可以被分割成一个或多个模块,一个或者多个模块被存储在存储器中,并由处理器执行,以完成本发明。一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序在计算机装置中的执行过程。
例如,计算机装置可以是手机、桌上型计算机、笔记本以及掌上电脑等计算设备。计算机装置可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,计算机装置可以包括更多或更少的部件,或者组合某些部件,或者不同的部件,例如计算机装置还可以包括输入输出设备、网络接入设备、总线等。
例如,处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。处理器是计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。
存储器可用于存储计算机程序和/或模块,处理器通过运行或执行存储在存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现计算机装置的各种功能。例如,存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序(例如声音接收功能、声音转换成文字功能等)等;存储数据区可存储根据手机的使用所创建的数据(例如音频数据、文本数据等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(FlashCard)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
存储介质实施例:
上述实施例的计算机装置集成的模块如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,实现上述打印数据处理方法实施例中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述打印数据处理方法实施例的步骤。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。存储介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
由上述可知,本发明在进行矢量数据打印前,先将矢量数据转换成点阵数据,使需要打印的数据符合点阵打印机的打印参数设置,从而提高点阵打印机打印矢量数据的打印质量。此外,打印数据包括图片数据和/或文字数据,通过分别对矢量图片和矢量字符的点阵转换,不同类型的数据采用不同的转换方式,使点阵打印机打印的出来的矢量字符和矢量图片更加清晰,质量更佳。另外,在进行矢量字符的点阵转换时,首先获取矢量字符中字符所对应的字符轮廓,并对字符的字符轮廓进行缩放处理,获得缩放处理后的坐标,获得坐标信息后对字符所对应的字符轮廓进行光栅化处理,从而生成矢量字符对应的点阵字符。通过对字符的字符轮廓进行缩放处理,可获得字符在打印时所需的坐标数据,使字符的大小更符合打印的要求。另外通过对字符的字符轮廓进行光栅化处理,使高分辨率的矢量数据转化为低分辨率的点阵数据,使得矢量数据更符合点阵打印机的打印参数。
需要说明的是,以上仅为本发明的优选实施例,但发明的设计构思并不局限于此,凡利用此构思对本发明做出的非实质性修改,也均落入本发明的保护范围之内。