2010-10-05 5 views
1

Quelqu'un connaît-il une bibliothèque appropriée pour écrire une image au format .TMB? Le format .TMB convient à l'impression de logos à partir d'une imprimante de reçus thermiques Epson.Une bibliothèque pour créer des images .TMB?

+0

Avez-vous des exemples de fichiers? Il se peut que ce soit un bitmap simple. –

+0

Je pense que vous avez raison ... voir ma réponse s'il vous plaît –

+0

Excellent. Dommage que je ne l'ai pas affiché comme une réponse;) –

Répondre

2

Après environ une heure de regarder les données binaires, je suis arrivé à la conclusion suivante:

A * image .TMB est vraiment juste une commande sérialisé ESC/POS pour imprimer une image raster.

En utilisant la commande suivante:

od -t a -v [YOUR_TMB_FILE] | head

nous pouvons voir les données binaires, sous forme de données de caractère ASCII, au début du fichier TMB.

j'avais un fichier qui ressemblait quelque chose comme ceci:

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 ... 

Selon le ESC/POS Programming Guide, la commande ASCII pour imprimer une image raster est:

GS V 0

Hmm .. Intéressant!

Sur un coup de tête, j'ai décidé de convertir 5 et P à leurs équivalents décimaux, qui sont respectivement 53 et 80, les dimensions exactes de mon image .TMB (en fait, son 80x53)!

Tout est tombé en place après cela. Le reste d'un fichier .TMB est juste les données d'image binaires.

Voici un script Python unique je l'ai écrit pour tester ma théorie:

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() 
Questions connexes