NIST Impex SDK Library for Linux

Read and Write ANSI/NIST-ITL 20xx specification files (Traditional and XML)

NIST Impex SDK Library

When dealing with biometric data its vital that your company can meet the needs of emerging transfer standards, Our NIST Impex SDK ensures that your company's biometric solutions instantly meets the ANSI/NIST-ITL 1-2000 and ANSI/NIST-ITL 1-2007, ANSI/NIST-ITL 1-2011 and ANSI/NIST-ITL 1-2011 Update 2015 specifications, making your product capable of data impex with other biometric agencies worldwide including the FBI and Interpol.

Learn More
Image Description
Image Description
Image Description
Image Description
Features

Supported Record Types

Our duty towards you is to share our experience we're reaching in our work path with you.

Request Early Access Beta
Supported Record Types
Feature
Type 1 File Transaction info
Type 2 Alpha PCI data
Type 3,4,5,6 Fingerprint Image Data
Type 7,16 User Defined Image Data
Type 8 Signature Data
Type 9 Minutia
Type 10 Facial Image Data
Type 11 Voice Data
Type 10 Scars Marks and Tattoos
Type 13 Latent Prints
Type 14 Tenprint Fingerprint Impressions
Type 15 Palm Prints
Type 17 Iris Data
Type 19 Plantar
Type 20 Source Representation
Type 99 CBEFF Biometric Data
NIST Specifications File Size Download Link
ANSI/NIST ITL-1-2000
(NIST Special Publication 500-245)
613 KB
ANSI/NIST ITL-1-2007
(NIST Special Publication 500-271)
1,616 KB
ANSI/NIST ITL-1-2011
(NIST Special Publication 500-290)
5,578 KB
ANSI/NIST ITL-1-2011 Update 2013
(NIST Special Publication 500-290 Rev1 (2013))
5,661 KB
ANSI/NIST ITL-1-2011 Update 2015
(NIST Special Publication 500-290 Edition 3 (2015))
10,581 KB
Integration

Supports the leading development environments.

We believe that the best way to see the features and benefits of our SDK is to trial it for yourself.

  • C++ / Java
  • Android Studio / Eclipse / NetBeans
  • Rapid Application development
  • Comprehensive SDK documentation
  • Bring your application to market faster
Code Examples

Example code for C#, Java and Perl

See how easy it is to integrate the NIST Impex SDK into your projects

// file: opennistfile.java // This file illustrates the use of the IDX NIST Impex API using Java import com.netxsolutions.idx.impex.NIST; // ----- Object creation ----- public class opennistfile { static { System.loadLibrary("NISTWrapperJava"); } public static void main(String argv[]) { System.out.println ("Creating NIST object:"); NIST nist = new NIST(); System.out.println ("Load NIST File"); int ret = nist.LoadNISTFile("..\\Sample Files\\type-4-14-slaps.an2"); if ( ret == 0 ) { System.out.println ("NIST file successfully opened"); // ----- Output some values from the open NIST file System.out.println ("Originating Agency: " + nist.GetFieldValueJava(1,8) ); // ----- Perform a check of the TOT type if (nist.GetFieldValueJava(1,4).equals("AMN")) { System.out.println ("Yes tot type is AMN"); } else { System.out.println ("No this is not an AMN record"); } }else{ System.out.print ("NIST file failed to open, Error: " ); System.out.println (ret); } } } // ----- Delete everything -----
// file: exportrecords.java // This file illustrates the use of the IDX NIST Impex API using Java import com.netxsolutions.idx.impex.NIST; // ----- Object creation ----- public class exportrecords { static { System.loadLibrary("NISTWrapperJava"); } public static void main(String argv[]) { System.out.println ("Creating NIST object:"); NIST nist = new NIST(); System.out.println ("Load NIST File"); int ret = nist.LoadNISTFile("..\\Sample Files\\type-4-14-slaps.an2"); if ( ret == 0 ) { System.out.println ("NIST file successfully opened"); // ----- Export some records from the open NIST file without modification nist.SaveBinaryImage(4,0,"C:\\IDX - Example Output\\LeftSlap.wsq"); nist.SaveBinaryImage(4,1,"C:\\IDX - Example Output\\RightSlap.wsq"); // ----- Export some records from the open NIST file and convert image format to PNG nist.SaveBinaryImage(4,0,"C:\\IDX - Example Output\\LeftSlap.png",NIST.OutputFormat.PNG); nist.SaveBinaryImage(4,1,"C:\\IDX - Example Output\\RightSlap.png",NIST.OutputFormat.PNG); System.out.println ("Images have been extracted to:"); System.out.println ("C:\\IDX - Example Output\\"); }else{ System.out.print ("NIST file failed to open, Error: " ); System.out.println (ret); } } } // ----- Delete everything -----
// file: checkislicensed.java // This file illustrates the use of the IDX NIST Impex API using Java import com.netxsolutions.idx.impex.NIST; // ----- Object creation ----- public class checkislicensed { static { System.loadLibrary("NISTWrapperJava"); } public static void main(String argv[]) { System.out.println ("Check is licensed:"); NIST nist = new NIST(); // Check the NIST SDK is IsLicensed boolean isLicensed = nist.IsLicensed(); if ( isLicensed ) { System.out.println ("IDX NIST Impex is licensed"); }else{ // It's not licensed lets display the reason int licenseState = nist.GetLicenceState(); System.out.print ("NIST License state: " ); if (licenseState==-9999) { System.out.println ("IDX_NO_LICENCE"); }else if (licenseState==-9998) { System.out.println ("IDX_TRIAL_LICENCE_EXPIRED"); }else{ System.out.println (licenseState); } } } }
// file: createnistfile.java // This file illustrates the use of the IDX NIST Impex API using Java import com.netxsolutions.idx.impex.NIST; // ----- Object creation ----- public class createnistfile { static { System.loadLibrary("NISTWrapperJava"); } public static void main(String argv[]) { System.out.println ("Creating NIST object:"); NIST nist = new NIST(); System.out.println ("Load NIST File"); int ret = nist.NewNIST(); if ( ret == 0 ) { System.out.println ("New NIST file successfully created"); // ----- Add some biographic data from the open NIST file nist.AddField(2,31,"John"); nist.AddField(2,32,"Doe"); // ----- Add a Type 10 Facial Image nist.AddFacialImage("..\\Sample Files\\type10.jpg","F"); // ----- Add a Type 14 Fingerprint Image nist.AddFingerprintImage("..\\Sample Files\\RightThumb.bmp",NIST.FingerPosition.RIGHT_THUMB , NIST.ImpressionType.NON_LIVE_SCAN_PLAIN); nist.AddFingerprintImage("..\\Sample Files\\RightIndex.bmp",NIST.FingerPosition.RIGHT_INDEX_FINGER , NIST.ImpressionType.NON_LIVE_SCAN_PLAIN); nist.AddFingerprintImage("..\\Sample Files\\RightMiddle.bmp",NIST.FingerPosition.RIGHT_MIDDLE_FINGER , NIST.ImpressionType.NON_LIVE_SCAN_PLAIN); nist.AddFingerprintImage("..\\Sample Files\\LeftAndRightThumbs.bmp",NIST.FingerPosition.LEFT_AND_RIGHT_THUMBS , NIST.ImpressionType.NON_LIVE_SCAN_PLAIN); // ----- Add a Type 17 left iris image nist.AddType17Image("..\\Sample Files\\type17.png", NIST.IrisType.LEFT_IRIS); // Convert Type 4 records to Type 14 nist.IAFIS_To_NIST(); ret = nist.SaveNISTFile("C:\\IDX - Example Output\\NISTwithRAWFiles.nst"); if ( ret == 0) { System.out.println ( "NIST file successfully created"); }else{ System.out.print ( "NIST file failed to save, Error: "); System.out.println (ret); } }else{ System.out.print ("NIST file failed to create, Error: "); System.out.println (ret); } } }
// file: createwsqandnistfile.java // This file illustrates the use of the IDX NIST Impex API and WSQ API using Java import java.io.File; import java.io.IOException; import com.netxsolutions.idx.wsq.WSQWrapper; import com.netxsolutions.idx.impex.NIST; // ----- Object creation ----- public class createwsqandnistfile { static { System.loadLibrary("NISTWrapperJava"); System.loadLibrary("WSQWrapperJava"); } // Take a BMP fingerprint and encode it to WSQ, the resulting WSQ image is then stored in the NIST file private static void EncodeAndStore(NIST nist, String filePath, NIST.FingerPosition fingerPosition, NIST.ImpressionType impressionType) { try { File tempWSQ = File.createTempFile("temp-file-name", ".tmp"); int ret = WSQWrapper.EncodeWSQFile(filePath, tempWSQ.getAbsolutePath(), (float)2.25, 0, 0, ""); System.out.println (tempWSQ.getAbsolutePath()); if (ret==0) { nist.AddFingerprintImage(tempWSQ.getAbsolutePath(),fingerPosition , impressionType); tempWSQ.delete(); } }catch(IOException e) {} } public static void main(String argv[]) { System.out.println ("Creating NIST object:"); NIST nist = new NIST(); System.out.println ("Load NIST File"); int ret = nist.NewNIST(); if ( ret == 0 ) { System.out.println ("New NIST file successfully created"); // ----- Add some biographic data from the open NIST file nist.AddField(2,31,"John"); nist.AddField(2,32,"Doe"); // ----- Add a Type 10 Facial Image nist.AddFacialImage("..\\Sample Files\\type10.jpg","F"); // ----- Add a Type 14 Fingerprint Image EncodeAndStore(nist,"..\\sample files\\RightThumb.bmp",NIST.FingerPosition.RIGHT_THUMB, NIST.ImpressionType.NON_LIVE_SCAN_PLAIN); EncodeAndStore(nist,"..\\sample files\\RightIndex.bmp",NIST.FingerPosition.RIGHT_INDEX_FINGER, NIST.ImpressionType.NON_LIVE_SCAN_PLAIN); EncodeAndStore(nist,"..\\sample files\\RightMiddle.bmp",NIST.FingerPosition.RIGHT_MIDDLE_FINGER, NIST.ImpressionType.NON_LIVE_SCAN_PLAIN); EncodeAndStore(nist,"..\\sample files\\LeftAndRightThumbs.bmp",NIST.FingerPosition.LEFT_AND_RIGHT_THUMBS, NIST.ImpressionType.NON_LIVE_SCAN_PLAIN); // ----- Add a Type 17 left iris image nist.AddType17Image("..\\Sample Files\\type17.png", NIST.IrisType.LEFT_IRIS); // Convert Type 4 records to Type 14 nist.IAFIS_To_NIST(); ret = nist.SaveNISTFile("C:\\IDX - Example Output\\NISTwithWSQFiles.nst"); if ( ret == 0) { System.out.println ( "NIST file successfully created"); }else{ System.out.print ( "NIST file failed to save, Error: "); System.out.println (ret); } }else{ System.out.print ("NIST file failed to create, Error: "); System.out.println (ret); } } }
// file: shownistfileinfo.java // This file illustrates the use of the IDX NIST Impex API using Java import com.netxsolutions.idx.impex.NIST; // ----- Object creation ----- public class shownistfileinfo { static { System.loadLibrary("NISTWrapperJava"); } public static void main(String argv[]) { System.out.println ("Creating NIST object:"); NIST nist = new NIST(); System.out.println ("Load NIST File"); int ret = nist.LoadNISTFile("..\\Sample Files\\type-4-14-slaps.an2"); if ( ret == 0 ) { System.out.println ("NIST file successfully opened"); // Display count of the different record types contained in this file for (int recordType=1;recordType<=99; recordType++) { int recordCount = nist.GetRecordCount(recordType); if (recordCount>0) { System.out.println ( String.format("Record Type %d has %d records", recordType , recordCount )); } } // Output all the Type 2 fields for (int fieldNumber=0;fieldNumber<=2000; fieldNumber++) { String theValue = nist.GetFieldValueJava(2,fieldNumber); if(theValue != null && !theValue.isEmpty()) { System.out.println ( String.format("%d.%03d: %s", 2, fieldNumber , theValue) ); } } }else{ System.out.print ("NIST file failed to open, Error: " ); System.out.println (ret); } } }