Crate img_hash[][src]

A crate that provides several perceptual hashing algorithms for images. Supports images opened with the image crate from Piston.

Example

Hash two images, then compute their percentage difference.

extern crate image;
extern crate img_hash;
 
use img_hash::{ImageHash, HashType};

fn main() {
    let image1 = image::open("image1.png").unwrap();
    let image2 = image::open("image2.png").unwrap();
     
    // These two lines produce hashes with 64 bits (8 ** 2),
    // using the Gradient hash, a good middle ground between 
    // the performance of Mean and the accuracy of DCT.
    let hash1 = ImageHash::hash(&image1, 8, HashType::Gradient);
    let hash2 = ImageHash::hash(&image2, 8, HashType::Gradient);
     
    println!("Image1 hash: {}", hash1.to_base64());
    println!("Image2 hash: {}", hash2.to_base64());
     
    println!("% Difference: {}", hash1.dist_ratio(&hash2));
}

Structs

DCT2DFunc

A 2-dimensional Discrete Cosine Transform function that receives and returns 1-dimensional packed data.

ImageHash

A struct representing an image processed by a perceptual hash. For efficiency, does not retain a copy of the image data after hashing.

Enums

FromBase64Error

Errors that can occur when decoding a base64 encoded string

HashType

An enum describing the hash algorithms that img_hash offers.

Traits

HashImage

A trait for describing an image that can be successfully hashed.

Functions

precompute_dct_matrix

Precompute the DCT matrix for a given hash size and memoize it in thread-local storage.

Type Definitions

Rowstride

The length of a row in a 2D matrix when packed into a 1D array.