{"id":32535565,"url":"https://github.com/aagsolutions/nbis","last_synced_at":"2026-05-01T23:39:48.550Z","repository":{"id":317032016,"uuid":"1065725623","full_name":"aagsolutions/nbis","owner":"aagsolutions","description":"NIST standard decoder/encoder","archived":false,"fork":false,"pushed_at":"2026-03-18T14:41:29.000Z","size":55534,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-01T23:39:40.245Z","etag":null,"topics":["gradle","image-processing","java","jpeg","jpg","kotlin","nist","png","wsq"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aagsolutions.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-28T10:02:21.000Z","updated_at":"2026-03-18T14:41:36.000Z","dependencies_parsed_at":null,"dependency_job_id":"71641b4f-065e-4278-a950-535f7296ee58","html_url":"https://github.com/aagsolutions/nbis","commit_stats":null,"previous_names":["atdi/nbis","aagsolutions/nbis"],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/aagsolutions/nbis","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aagsolutions%2Fnbis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aagsolutions%2Fnbis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aagsolutions%2Fnbis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aagsolutions%2Fnbis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aagsolutions","download_url":"https://codeload.github.com/aagsolutions/nbis/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aagsolutions%2Fnbis/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32517232,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"online","status_checked_at":"2026-05-01T02:00:05.856Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gradle","image-processing","java","jpeg","jpg","kotlin","nist","png","wsq"],"created_at":"2025-10-28T13:01:31.315Z","updated_at":"2026-05-01T23:39:48.541Z","avatar_url":"https://github.com/aagsolutions.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NIST Library\n\n![Build\u0026Test](https://github.com/aagsolutions/nbis/actions/workflows/main.yml/badge.svg) [![Maven Central](https://img.shields.io/maven-central/v/eu.aagsolutions.img/nbis)](https://central.sonatype.com/artifact/eu.aagsolutions.img/nbis/0.8.4) [![GitHub license](https://img.shields.io/badge/license-MIT-green.svg?style=flat)](https://opensource.org/licenses/MIT) ![CodeQL Scan Status](https://github.com/aagsolutions/nbis/actions/workflows/codeql.yml/badge.svg)\n\nA Kotlin implementation of NIST Biometric Image Software (NBIS) for reading, writing, and building NIST records. Compatible with any JVM language.\n\n### Getting started:\n* [Documentation](https://aagsolutions.github.io/nbis/)\n* [Examples](https://github.com/aagsolutions/nbis/tree/main/samples)\n\n## About\n\nNBIS is a library implemented in Kotlin to extract, decode, build and write NIST compressed files. For more information about NIST Biometric Image Software, visit the [official NIST page](http://www.nist.gov/itl/iad/ig/nbis.cfm).\n\n## Features\n\n- ✅ **Read** NIST files from various input sources\n- ✅ **Write** NIST files to output streams\n- ✅ **Build** NIST files programmatically\n- ✅ Support for record types 1-17\n- ✅ JVM language compatibility (Java, Kotlin, Scala, etc.)\n- ✅ Comprehensive field access and manipulation\n\n## NIST Record Types Support\n\n| Record Type | Description | Read | Write | Build |\n|-------------|-------------|------|-------|-------|\n| 1 | Transaction Information Record | ✅ | ✅ | ✅ |\n| 2 | User-defined descriptive text | ✅ | ✅ | ✅ |\n| 3 | Low-resolution grayscale fingerprint image | ✅ | ✅ | ✅ |\n| 4 | High-resolution grayscale fingerprint image | ✅ | ✅ | ✅ |\n| 5 | Low-resolution binary fingerprint image | ✅ | ✅ | ✅ |\n| 6 | High-resolution binary fingerprint image | ✅ | ✅ | ✅ |\n| 7 | User-defined image | ✅ | ✅ | ✅ |\n| 8 | Signature image | ✅ | ✅ | ✅ |\n| 9 | Minutiae data (for fingerprints) | ✅ | ✅ | ✅ |\n| 10 | Facial and SMT image | ✅ | ✅ | ✅ |\n| 11 | Forensic and investigatory voice data | ✅ | ✅ | ✅ |\n| 12 | Forensic dental and oral data | ✅ | ✅ | ✅ |\n| 13 | Variable-resolution latent friction ridge image | ✅ | ✅ | ✅ |\n| 14 | Variable-resolution fingerprint image | ✅ | ✅ | ✅ |\n| 15 | Palm print image | ✅ | ✅ | ✅ |\n| 16 | User-defined variable-resolution test image | ✅ | ✅ | ✅ |\n| 17 | Iris image | ✅ | ✅ | ✅ |\n| 18 | DNA data | ❌ | ❌ | ❌ |\n| 19 | Plantar (footprint) image | ❌ | ❌ | ❌ |\n| 20 | Original image record | ❌ | ❌ | ❌ |\n\n## Installation\n\n### Maven\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003eeu.aagsolutions.img\u003c/groupId\u003e\n    \u003cartifactId\u003enbis\u003c/artifactId\u003e\n    \u003cversion\u003e0.8.4\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n### Gradle (Groovy DSL)\n\n```groovy\nimplementation 'eu.aagsolutions.img:nbis:0.8.4'\n```\n\n### Gradle (Kotlin DSL)\n\n```kotlin\nimplementation(\"eu.aagsolutions.img:nbis:0.8.4\")\n```\n\n## Quick Start\n\n### Reading a NIST File\n#### From an input stream\n##### Kotlin\n```kotlin\nval nistFile = NistFileReader(inputStream).use { reader -\u003e reader.read() }\nval transactionInformationRecord = nistFile.getTransactionInformationRecord()\n```\n##### Java\n```java\ntry (NistFileReader reader = new NistFileReader(inputStream)) {\n    NistFile nistFile = reader.read();\n    TransactionInformationRecord transactionInformationRecord = nistFile.getTransactionInformationRecord();\n}\n```\n#### From a byte array\n##### Kotlin\n```kotlin\nval nistFile = NistFileReader.Companion.decode(byteArray)\nval transactionInformationRecord = nistFile.getTransactionInformationRecord()\n```\n##### Java\n```java\nNistFile nistFile = NistFileReader.Companion.decode(byteArray);\nTransactionInformationRecord transactionInformationRecord = nistFile.getTransactionInformationRecord();\n```\n### Writing a NIST File\n#### Kotlin\n```kotlin\nNistFileWriter(FileOutputStream(\"output.nist\")).use { writer -\u003e writer.write(nistFile) }\n```\n#### Java\n```java\nNistFile nistFile = new NistFileBuilder()\n        .withTransactionInformationRecord(transactionInformationRecord)\n        .withUserDefinedDescriptionTextRecords(userDefinedTextRecord)\n        .withFacialAndSmtImageRecords(facialAndSMTImageRecord)\n        .build();\ntry (NistFileWriter writer = new NistFileWriter(new FileOutputStream(\"output.nist\"))) {\n    writer.write(nistFile);\n}\n```\n## API Documentation\n\n### Core Classes\n\n#### `NistFile`\nThe main container for NIST records.\n\n**Key Methods:**\n- `getTransactionInformationRecord()` - Get the required Type 1 record\n- `getRecordsByType(RecordType)` - Get all records of a specific type\n- `getRecordByTypeAndIdc(RecordType, Int)` - Get a specific record by type and IDC\n- `getAllRecords()` - Get all records in the file\n\n#### `NistFileReader`\nReads NIST files from input streams.\n\n#### `NistFileWriter`\nWrites NIST files to output streams.\n\n#### `NistFileBuilder`\nProgrammatically builds NIST files.\n\n### Working with Records\n\n#### Accessing Field Data\n```kotlin \n// Get field as text \nval idcValue = record.getFieldText(DefaultFields.IDC)\n// Get binary data (for image records) \nval imageData = record.getBinaryData()\n// Get specific field object \nval field = record.getField(DefaultFields.LEN)\n```\n#### Record Types\n\nAll record types extend `BaseRecord` and provide type-specific functionality:\n\n- `TransactionInformationRecord` - Type 1 records\n- `UserDefinedTextRecord` - Type 2 records\n- `HighResolutionGrayscaleFingerprintRecord` - Type 4 records\n- `MinutiaeDataRecord` - Type 9 records\n- And more...\n\n### Field Types\n\nThe library supports different field types:\n\n- **`TextField`** - Text-based fields\n- **`ImageField`** - Binary image data fields\n\n## Requirements\n* Java: 21 or higher\n* Kotlin: 2.1 or higher\n\n## Inspiration and Credits\nThis project was inspired by the need for a robust and efficient library for handling NIST biometric image files. The inspiration comes from the original NBIS library, which is written in C and has been widely used in the biometric community. \nThe goal of this project is to provide a modern, Kotlin-based alternative that is easier to use and maintain.\n\nThe project also draws inspiration from the work of other developers who have contributed to the open-source community with similar libraries. By leveraging their work and building upon it, we aim to create a high-quality, reliable, and efficient library for working with NIST biometric image files:\n* [JNBIS](https://github.com/mhshams/jnbis)\n* [NIST4J](https://github.com/nist4j/nist4j)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faagsolutions%2Fnbis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faagsolutions%2Fnbis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faagsolutions%2Fnbis/lists"}