NIST-ITL Parser Library¶
Release v0.6.
Getting Started¶
To generate a NIST-ITL binary message:
msg = nistitl.Message()
msg.TOT = 'MY_TOT'
r2 = nistitl.AsciiRecord(2)
r2 += nistitl.Field(2,3,alias='TEST')
msg += r2
buffer = msg.NIST
To parse a NIST-ITL binary message:
msg = nistitl.Message()
msg.parse(buffer)
print("The TOT is ",msg.TOT)
for record in msg.iter(2):
print("Field 2.003 is ",record._3)
Full Example¶
Build a NIST¶
msg = nistitl.Message()
msg.TOT = 'MY_TOT'
msg[0].TCN = 'TCN'
# --- Add a type 2 record
r2 = nistitl.AsciiRecord(2)
msg += r2
r2.IDC = 1
# Add field 2.003, long notation used to specify an alias
r2 += nistitl.Field(2,3,alias='TEST')
# Add field 2.004, with 2 subfields) using the short notation
r2._4 = ('SF1', 'SF2')
# --- Add a type 4 record
r4 = nistitl.BinaryRecord(4)
msg += r4
r4.IDC = 2
# Set all fields in one step, image and headers
r4.pack("!BBBBBBBBHHB", # format for ANSI/NIST-ITL 1-2011: UPDATE 2015
1, # impression type (rolled contact)
1, 255, 255, 255, 255, 255, # finger position (right thumb)
0, # image scanning resolution (500 ppi)
500, 500, # width & height
1, # compression algo (WSQ)
b'image') # the image buffer
# --- Add a type 10 record
r10 = nistitl.AsciiRecord(10)
msg += r10
r10.IDC = 3
# Used pre-defined alias
r10.SRC = 'my src'
r10.DATA = b'image'
# Generate the NIST buffer
buffer = msg.NIST
Parse a NIST¶
msg = nistitl.Message()
msg.parse(buffer)
# --- Access type 2 record
r2 = msg[(2, 1)]
# Read field 2.003
v = r2._3
# --- Loop on all records of type 4
for r4 in msg.iter(4):
# Get all fields
all_fields = r4.unpack("!BBBBBBBBHHB")
imp = all_fields[0]
fgp = list(all_fields[1:7])
isr = all_fields[7]
width = all_fields[8]
height = all_fields[9]
gca = all_fields[10]
image = all_fields[11]
# --- Loop on all records of type 10
for r10 in msg.iter(10):
# Used pre-defined alias
src = r10.SRC
image = r10.DATA