Как преобразовать монохромное изображение в побитовый формат для термопринтера - PullRequest
3 голосов
/ 18 ноября 2011

Я использую Custom s'print DPT100-S для печати чеков.

Может печатать графику с использованием 384 пикселей в одну строку. Эти данные должны быть переданы на принтер с использованием 48 байтов (48x8 = 384). Таким образом, каждый «бит» представляет одну точку для печати (бит будет «0» для белого и «1» для черного).

Итак, мне нужно создать программу, которая будет читать монохромный BMP, сгенерированный в Windows Paint (или любой другой программе), и преобразовывать его в этот битовый формат с помощью программы на Си в Linux.

Пожалуйста, ведите меня.

Ответы [ 3 ]

3 голосов
/ 18 ноября 2011

Псевдокод:

Read BMP
For each row in BMP
    For each group of 8 pixels in row
        output_byte = 0
        For each pixel in current group of 8
            output_byte <<= 1             // shift output_byte left by one bit
            output_byte |= (pixel != 0)   // set rightmost bit in output_byte
                                          // according to input pixel value
        Save output_byte in bitmap
2 голосов
/ 06 февраля 2014

Эта ссылка имеет программное обеспечение, которое называется LCD assistant, и выполняет то же действие, что и вам. Вы должны использовать краску для преобразования любого изображения в растровое изображение, а затем импортировать это изображение BMP в программное обеспечение. На выходе вы можете выбрать 384 X XYZ. Вы получаете выходные пиксели в HEX.

2 голосов
/ 18 ноября 2011

Взгляните на полутон.

Быстрый Google даст вам ссылки и апплет Java, как здесь: http://www.markschulze.net/halftone/index.html

Если вам не нужно создавать собственную программу и вы готовы использовать готовое программное обеспечение, попробуйте команду convert ImageMagick: http://www.imagemagick.org/Usage/quantize/#halftone например,

convert myfile.jpg -colorspace Gray  -ordered-dither h4x4a printable-file.bmp
...