# README
goimagehash
Inspired by imagehash
A image hashing library written in Go. ImageHash supports:
Installation
go get github.com/corona10/goimagehash
Special thanks to
Usage
func main() {
file1, _ := os.Open("sample1.jpg")
file2, _ := os.Open("sample2.jpg")
defer file1.Close()
defer file2.Close()
img1, _ := jpeg.Decode(file1)
img2, _ := jpeg.Decode(file2)
hash1, _ := goimagehash.AverageHash(img1)
hash2, _ := goimagehash.AverageHash(img2)
distance, _ := hash1.Distance(hash2)
fmt.Printf("Distance between images: %v\n", distance)
hash1, _ = goimagehash.DifferenceHash(img1)
hash2, _ = goimagehash.DifferenceHash(img2)
distance, _ = hash1.Distance(hash2)
fmt.Printf("Distance between images: %v\n", distance)
width, height := 8, 8
hash3, _ = goimagehash.ExtAverageHash(img1, width, height)
hash4, _ = goimagehash.ExtAverageHash(img2, width, height)
distance, _ = hash3.Distance(hash4)
fmt.Printf("Distance between images: %v\n", distance)
fmt.Printf("hash3 bit size: %v\n", hash3.Bits())
fmt.Printf("hash4 bit size: %v\n", hash4.Bits())
var b bytes.Buffer
foo := bufio.NewWriter(&b)
_ = hash4.Dump(foo)
foo.Flush()
bar := bufio.NewReader(&b)
hash5, _ := goimagehash.LoadExtImageHash(bar)
}
Release Note
v1.1.0
- The performance of Perceptionhash is enhanced.
v1.0.3
- Add workflow for GithubAction
- Fix typo on the GoDoc for LoadImageHash
v1.0.2
- go.mod is now used for install goimagehash
v1.0.1
- Perception/ExtPerception hash creation times are reduced
v1.0.0
IMPORTANT goimagehash v1.0.0 does not have compatible with the before version for future features
- More flexible extended hash APIs are provided (ExtAverageHash, ExtPerceptionHash, ExtDifferenceHash)
- New serialization APIs are provided(ImageHash.Dump, ExtImageHash.Dump)
- ExtImageHashFromString, ImageHashFromString is deprecated and will be removed
- New deserialization APIs are provided(LoadImageHash, LoadExtImageHash)
- Bits APIs are provided to measure actual bit size of hash
v0.3.0
- Support DifferenceHashExtend.
- Support AverageHashExtend.
- Support PerceptionHashExtend by @TokyoWolFrog.
v0.2.0
- Perception Hash is updated.
- Fix a critical bug of finding median value.
v0.1.0
- Support Average hashing
- Support Difference hashing
- Support Perception hashing
- Use bits.OnesCount64 for computing Hamming distance by @dominikh
- Support hex serialization methods to ImageHash by @brunoro
# Functions
AverageHash fuction returns a hash computation of average hash.
DifferenceHash function returns a hash computation of difference hash.
ExtAverageHash function returns ahash of which the size can be set larger than uint64 Support 64bits ahash (width=8, height=8) and 256bits ahash (width=16, height=16).
ExtDifferenceHash function returns dhash of which the size can be set larger than uint64 Support 64bits dhash (width=8, height=8) and 256bits dhash (width=16, height=16).
ExtImageHashFromString returns a big hash from a hex representation
Deprecated: Use goimagehash.LoadExtImageHash instead.
ExtPerceptionHash function returns phash of which the size can be set larger than uint64 Some variable name refer to https://github.com/JohannesBuchner/imagehash/blob/master/imagehash/__init__.py Support 64bits phash (width=8, height=8) and 256bits phash (width=16, height=16) Important: width * height should be the power of 2.
ImageHashFromString returns an image hash from a hex representation
Deprecated: Use goimagehash.LoadImageHash instead.
LoadExtImageHash method loads a ExtImageHash from io.Reader.
LoadImageHash method loads a ImageHash from io.Reader.
NewExtImageHash function creates a new big hash.
NewImageHash function creates a new image hash.
PerceptionHash function returns a hash computation of phash.
# Structs
ExtImageHash is a struct of big hash computation.
ImageHash is a struct of hash computation.
# Type aliases
Kind describes the kinds of hash.