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
下面就是逐行打印图形的代码
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);
};


