Table des matières

Le format de fichier TSF

Travail en cours sur l'analyse du format Trotec Spool File (TSF) pour voir s'il ne serait pas possible de le générer à la mano, voir avec un plugin inkscape.

Format du fichier :

<!-- Version: 9.4.2.1034>
<!-- PrintingApplication: inkscape.exe>
<BegGroup: Header>
<ProcessMode: Standard>
<Size: 10.00;10.00>
<MaterialGroup: Standard>
<MaterialName: Standard>
<JobName: bbb_sq10>
<JobNumber: 2>
<Resolution: 500>
<Cutline: none>
<EndGroup: Header>

:OK: Le format est assez lisible à première vue :

:TODO: Jouer avec les différents réglages du driver trotec lorsque l'on imprime à partir d'inkscape pour voir ce que cela donne dans le tsf

Image BMP

<BegGroup: Bitmap>
<STBmp: 0;0>BMÊ^U^@^@^@^@^@^@>^@^@^@(^@^@^@Å^@^@^@Å^@^@^@^A^@^A^@.......<EOBmp>
<EndGroup: Bitmap>

:NOTE: Pour les modes couches et relief l'image bms est encodée sur 8bits(256couleurs) mais est en fait tramée sur 16 couleurs

:OK: Conversion d'une image png en bitmap N&B de façon assez brute (avec un flip sinon à l'envers dans JobControl): <code>convert image_source.png -flip pbm:- | ppm2bmp > image_nb.bmp</code> en fait pas besoin de passer par ppbm cf ci dessous

Quelques exemple de generation d'images monochromes (modes standard et tampon) avec tramage sympa grâce à imagemagick

Polygones

<BegGroup: DrawCommands>
<DrawPolygon: 5;255;0;0;0;0;196;0;196;196;0;196;0;0>
<DrawPolygon: 2;255;0;0;0;0;196;196>
<DrawPolygon: 2;0;0;255;196;0;0;196>
<EndGroup: DrawCommands>

:TODO: Faire des truc un peu plus compliqué dans inkscape et voir ce qui sort.

:TODO: Générer des trucs un peu plus compliqué “à la main” et voir ce qui se passe ;)

Fichier généré

Trucs utiles lors de l'analyse des BMP :

http://www.daubnet.com/en/file-format-bmp Description format BMP http://www.imagemagick.org/discourse-server/viewtopic.php?f=1&t=15846

Petit script d'analyse des entêtes bmp pour comparer l'image qui vient de trotec et ce que je génère:

bmp_header_extractor.py
import os,struct,sys
 
if len(sys.argv) != 2:
  print 'Usage:python viewer.py bmpfile'
  exit(1)
 
filename = sys.argv[1]
 
header_keys = ('signature','file size','reserved','reserved','data offset','size','width','height','planes','bitCount','compression','image size','XpixelsPerM','YpixelsPerM','ColorUsed','ColorImportant')
header_fmt = '=2sihhiiiihhiiiiii'
palette_fmt = 'BBBB'*256
 
f = open(filename,'rb')
 
#read header
print '----Header----'
s_header = f.read(54)
for k,it in zip(header_keys,struct.unpack(header_fmt,s_header)):
  print "%s : %s" %(k,it)
 
#read palette
print '----palette----'
s_palette = f.read(1024)
palette = struct.unpack(palette_fmt,s_palette)
i = 0
while i < len(palette):
  print palette[i:i+4]
  i += 4

,

Pistes idées, liens pour un plugin inkscape