gpt4 book ai didi

java - 如何打印位图TM-T88V

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:26:08 27 4
gpt4 key购买 nike

我无法打印每 24 行没有白线的位图。我需要打印一张图片,但这张图片有白线,每 24 行到位。

爱普生打印机将图像打印成下一种格式。

>line 23 01010101000010001010
>line 24 00001000100000000110
>line 25 --------- white line ------------

这该死的白线怎么删除?

    Image size
width:400px
height:73px

while (offset < height)
{
//format ESC* Epson printer
String modIMG = new String(new byte[]{0x1B, 0x2A, 33, 0, 2});
img.append(modIMG);
for (int x = 0; x < width; ++x) {
for (int k = 0; k < 3; ++k) {
byte slice= 0;
for (int b = 0; b < 8; ++b) {
int y = (((offset / 8) + k) * 8) + b;
int i = (y * width) + x;
boolean v = false;
if (i < bitSet.length()) {
v = bitSet.get(i);}
slice |= (byte) ((v ? 1 : 0) << (7 - b));
}
img.slice(new String(new byte[] {slice}));
}
}
offset += 24;
img.append(new String(new String(new byte[]{0x1B,0x33,30}));
}

最佳答案

所以我解决了这个问题。使用 ESC '3' 24 将行间距设置为 24 点是不够的,但您必须以页面模式打印图像。

进入页面模式:ESC 'L'

然后你必须使用 ESC 'W' 设置图像区域,这里我在 C 中进行:

           h2 = h * 2 + 30;
/* Set the printing area, h * 2 because of double density */
seq[0] = 0x1b;
seq[1] = 'W';
seq[2] = 0; /* xl */
seq[3] = 0; /* xh */
seq[4] = 0; /* yl */
seq[5] = 0; /* yh */
seq[6] = 0; /* dxl */
seq[7] = 2; /* dxh */
seq[8] = h2 % 256; /* dyl */
seq[9] = h2 / 256; /* dyh */
if (write(fd, seq, 10) != 10)
goto finish;

现在发送图像数据,最后发送 0x0c 打印,这也使打印机返回标准模式。

通过使用页面模式,图像上的白色条纹消失了。

顺便说一句,这似乎是 EPSON TM-T88 打印机的一个奇怪之处,我既没有在 TM-T500A 上也没有看到这些白线。奥瑞斯打印机。在这些打印机上,我可以使用标准模式打印图像。

关于java - 如何打印位图TM-T88V,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21192888/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com