tags:

views:

25

answers:

1

Is anyone aware of a library suitable for writing an image in .TMB format?

The .TMB format is suitable for printing logos from a Epson thermal receipt printer.

A: 

After about an hour or so of looking at binary data, I came to the following conclusion:

A *.TMB image is really just a serialized ESC/POS command to print a raster image.

Using the following command:

od -t a -v [YOUR_TMB_FILE] | head

we can view the binary data, as ASCII character data, in the beginning of the TMB file.

I had a file that looked something like this:

0000000  gs   v   0 nul   5 nul   P nul del del del del del del del del
0000020 del del del del del del del del del del del del del del del del
... snipped for brevity ...

According to the ESC/POS Programming Guide, the ASCII command to print a raster image is:

GS V 0

Hmm.. Interesting!

On a whim, I decided to convert 5 and P to their decimal equivalents, which are 53 and 80 respectively, the exact dimensions of my .TMB image (actually, its 80x53)!

Everything fell into place after this. The remainder of a .TMB file is just the binary image data.

Here is a one-off Python script I wrote to test my theory:

  1 out = open('test.TMB', 'wb')
  2 
  3 width = 80
  4 height = 53
  5 
  6 NUL = chr(0)
  7 GS = chr(29)
  8 V = chr(118)
  9 ZERO = chr(48)
 10 
 11 W = chr(width)
 12 H = chr(height)
 13 
 14 out.write(GS)
 15 out.write(V)
 16 out.write(ZERO)
 17 out.write(NUL)
 18 
 19 out.write(H)
 20 out.write(NUL)
 21 out.write(W)
 22 out.write(NUL)
 23 
 24 for y in range(0, height):
 25     for x in range(0, width):
 26         out.write(chr(127))    # looks like `del` in ASCII mode
 27 
 28 out.close()
on_conversion