image_hashing
NOTE: UNDER DEVELOPMENT!
A Dart library for generating perceptual hashes (AHash, PHash, DHash, WHash) from images, providing efficient single-image hash computation and comparison with pure Dart implementation.
Compatibility: Dart ^3.6.0
๐ Getting Started
Installation
Method 1 (Recommended) With Dart:
dart pub add image_hashing
With Flutter:
flutter pub add image_hashing
Method 2
Add to pubspec.yaml:
dependencies:
image_hashing: ^0.1.1
Then run:
dart pub get
Basic Usage
import 'package:image_hashing/image_hashing.dart';
void main() {
final hasher = AHash(); // or other hasher types
final hashRes = hasher.encodeImage("YourImageFile");
}
Currently only AHash is supported, to validate the whole process.
encodeImage will return you a String of hash value.
For AHash and PHash, it will be 64 bits (After hashing, you will obtain an $(8 \times 8)$ image).
For DHash, it will be 128 bits (Here, I decide to use both row difference and column difference to increase the countability, so you will obtain 2 $(8 \times 8)$ images).
WHash is still under-planning.
๐ฆ Features
-
Core Feature 1: Different Hashing Methods
final ahasher = AHash(); final phasher = PHash(); final dhasher = DHash(); final whasher = WHash(); // Wavelet Transform Hashing dependency is under developmentTo encode an image:
final ahasher = AHash(useCV: false); // OpenCV compatibility is under development final ahash = ahasher.encodeImage("YourImageFile"); -
Core Feature 2: Hamming Distances of Image Hashing After hashing, you can use the following function to calculate the Hamming Distances
final distance = hammingDistance(a, b, size: 64)where
aandbare the hash strings.sizeis 64 forAHashandPHash, 128 forDHash.Result will in an int value.
๐งช Testing
Unit tests are under development. Currently only unit tests for hamming distance
dart test
๐ค Contributing
Workflow
- Fork repository
- Create feature branch:
git checkout -b feat/your-feature - Follow Conventional Commits:
git commit -m "feat: add new validation method"
Code Style
Follow the Effective Dart and analysis_options.yaml
๐ Documentation
๐ License
BSD 3-Clause "New" or "Revised" License ยฉ 2025 RequieMa
Full text at LICENSE
๐ง Maintenance Status
Basic functionalities are under development.
Please report issues via GitHub Issues
Libraries
- image_hashing
- Support for doing something awesome.