
Image
Encode and decode biometric images across many platforms and mobile devices faster and easier than ever before.
Key Features
What is Image?
Image is an advanced cross-platform Java library that enables an application to read, write, and edit images in all common biometric image formats. It utilizes highly optimized state-of-the-art algorithms to achieve native code performance without the hassle of using the Java Native Interface(JNI).
CUSTOM-TAILORED FOR BIOMETRIC COLLECTION DEVICES AND IDENTIFICATION SYSTEMS
INCLUDES THE INDUSTRY’S FIRST AND FASTEST PURE JAVA FBI-CERTIFIED WSQ ALGORITHM
Image includes a high-performance Wavelet Scalar Quantization (WSQ) image compression and decompression library. This library is written purely in Java and is the industry’s first pure Java WSQ algorithm to be certified by the Federal Bureau of Investigation (FBI). We guarantee the average quality of images will match or exceed the average quality of images encoded with any other certified library.
* A C# .Net Core version is also available and is FBI WSQ certified for Mac, Linux, and Windows. Mobile versions for Android and iOS coming soon!
PROVEN RELIABLE AND ROBUST
Seeing is believing
See how Image SDK makes it easy to encode, decode, convert and manipulate images.
/**
* Read the image in using the ImageReader class, which can read from an
* InputStream, File, file path, or byte[]. The image format is optional
* and ImageReader will detect the image format. However, if the image
* format is specified, the operation will have a slight performance gain
**/
Image image = ImageReader.read(imageBytes);
/** Convert to WSQ with default encoding **/
Image wsqImg = image.toWsqImage();
/** Convert to WSQ with default bitrate (0.75f) and comments. Encoding WSQ
* with comments can store vital information that stays with the image
* and can be retreived when decoding.
**/
Image wsqImg2 = image.toWsqImage("Encoded comment 1", "Encoded comment 2");
/** Convert to WSQ using a different bitrate.
* 0.75 bit rate ~= 15:1 compression ratio (standard)
* 2.25 bit rate ~= 5:1 compression ratio
**/
Image wsqImg3 = image.toWsqImage(2.25f);
/** Convert to PNG image **/
Image pngImg = image.toPngImage();
/** Convert to JPEG2000 (JP2). Can specify bitrate (100 = lossless) **/
Image jp2Img = image.toJp2Image();
pngImg.toWsqImage().getBytes();
pngImg.toWsqImage(0.75f,"Encoded comment 1","Encoded comment 2");
Image wsqImg = ImageReader.read(wsqBytes);
/**
* Must cast the object to BufferedImage. This is necessary for this library
* to be compatible on Android, since Android JRE does not have BufferedImage.
*/
BufferedImage bufferedImage = (BufferedImage) wsqImg.toBufferedImage();
Image wsqImg = ImageReader.read(wsqBytes);
/**
* Must cast the object to android.media.Image. This is necessary for
* this library to be compatible on non-Android environments.
*/
android.media.Image androidImg = (android.media.Image) wsqImg.toAndroidImage();
/** Downsample by 50% using the NIST recommended downsampling approach **/
Image image500Dpi = image1000Dpi.downsampleGaussian50();
/**
* Rotate about the center 45 degrees and fill in with white pixels.
* Also, the x and y point to rotate about can also be specified.
**/
RawImage rawImg = img.rotate(Math.toRadians(45.0), Pixel.WHITE_PIXEL);
/**
* Image can also convert the raster format of the an Image and rotate a
* raster.
**/
Raster raster8bitGrayscale = img.toRawImage(RasterFormat.GRAY_8).getRaster();
Raster rotatedRaster = Rotate.rotate(raster8bitGrayscale, Math.toRadians(45.0));
/**
* Create the image from a raster
*/
RawImage rawImage = RawImage.fromRaster(rotatedRaster);