求教关于热敏打印机打印图形的问题
hbuilder吧
全部回复
仅看楼主
level 4
e4snake 楼主
我将图形二值化了,然后用字节流的方式进行打印,但是失去了很多细节,比如本来应该是一片黑色的头发位置,只有轮廓,效果就差了很多。目前看数据肯定没问题,不知道有没有朋友遇到过类似问题呢?该怎么解决呢?
下面就是逐行打印图形的代码
for(var j = 0; j < imgRows; j++){
//打印图片指令
k=0;
data[lbk]k++[rbk]=27;
data[lbk]k++[rbk]=42;
data[lbk]k++[rbk]=33;
data[lbk]k++[rbk]=nL;
data[lbk]k++[rbk]=nH;
for (var x = 0; x < canvasData.width; x++) {
for (var m = 0; m < 3; m++){
for (var n = 0; n < 8; n++){
var b=px2Byte(x,j*24+m*8+n,canvasData);
data[lbk]k[rbk] += data[lbk]k[rbk] + b;
}
k++
}
}
data[lbk]k++[rbk]=10;
//这里将字节数组发送到打印机
var db=Array.from(data);
outputStream.write(db);
};
如果不用字节数组方式,而是每个数据直接输出,就会有乱码导致图形被分行,而且效率很低,反应慢。而且看得出来是开头没问题,打印几行之后开始循环出现乱码,感觉是每行末尾出问题的样子。
下面是每个数据单独输出的代码
for(var j = 0; j < imgRows; j++){
//打印图片指令
out.write(27);
out.write(42);
out.write(33);
out.write(nL);
out.write(nH);
for (var x = 0; x < canvasData.width; x++) {
k=0;
for (var m = 0; m < 3; m++){
for (var n = 0; n < 8; n++){
var b=px2Byte(x,j*24+m*8+n,canvasData);
data[lbk]k[rbk] += data[lbk]k[rbk] + b;
}
out.write(data[lbk]k[rbk]);
}
}
out.write(10);
};
2024年01月04日 11点01分 1
level 1
热敏打印机可以打印图形,但由于其打印分辨率有限,图形可能缺乏细节和清晰度。为了获得更好的效果,可以将图形转换为位图格式,调整打印机的打印密度和对比度设置,使用高质量的热敏纸张,并确保图形的分辨率适合打印机的能力。此外,避免使用过于复杂或细微的图形,以确保最佳的打印结果。
2024年01月04日 11点01分 2
嗯嗯,分辨率没用多高,288x288而已,主要是对于esc打印指令感觉有点难以操作,目前都能打印,就是打印结果明显有问题。
2024年01月04日 12点01分
1