Сначала позвольте мне сказать, что я знаю, что вопрос старый, и эта команда считается устаревшей, но все еще существует огромный рынок термопринтеров, которые принимают эту команду.
Недостаточно баллов на этой учетной записи, чтобы написать комментарий к ответу @Fewl.
Он прав в отношении yL и yH, но не в отношении xL и xH.
xL, xH определяет (xL + xH × 256) байтов по горизонтали для битового изображения.
yL, yH указывает (yL + yH × 256) точек в вертикальном направлении для битового изображения.
Ссылка: https://www.epson-biz.com/modules/ref_escpos/index.php?content_id=94
Допустим, ваше растровое изображение имеет ширину 384 пикселя и высоту 260 пикселей, тогда:
xL = width % 2048 / 8;
xH = width / 2048;
// width = 384
// xL = 48
// xH = 0
// (xL + xH × 256) = 48 + 0 x 256 = 48 **bytes** in horizontal direction.
yL = height % 256;
yH = height / 256;
//height = 260
// yL = 4
// yH = 1
// (yL + yH × 256) = 4 + 1 x 256 = 260 **dots** in vertical direction
Объяснение, пример битового изображения имеет 384/8 = 48 байтов в горизонтальном направлении, так как 48 ‹ 256 вам не нужно вычислять xH (старший байт), он будет равен 0. Вам нужно будет вычислить xH, только если ваше растровое изображение шире чем 8 * 256 = 2048 точек ... Что маловероятно для термопринтеров, но я включил даже этот сценарий в приведенный выше код.
Важная заметка! Ширина моего примера (384) делится на 8. Если это не так, вам придется учесть это, округлив деление и дополнив битовые данные нулями... или просто заранее измените размер растрового изображения, чтобы его ширина делилась на 8.
person
Uroš
schedule
16.02.2020