package imageutil import ( "image" "github.com/corona10/goimagehash" ) const ( thAverageHash = 6 thDifferenceHash = 5 thPerceptionHash = 6 ) func AverageHashDistance(imgA, imgB image.Image) (distance int) { hashA, _ := goimagehash.AverageHash(imgA) hashB, _ := goimagehash.AverageHash(imgB) distance, _ = hashA.Distance(hashB) return } func DifferenceHashDistance(imgA, imgB image.Image) (distance int) { hashA, _ := goimagehash.DifferenceHash(imgA) hashB, _ := goimagehash.DifferenceHash(imgB) distance, _ = hashA.Distance(hashB) return } func PerceptionHashDistance(imgA, imgB image.Image) (distance int) { hashA, _ := goimagehash.PerceptionHash(imgA) hashB, _ := goimagehash.PerceptionHash(imgB) distance, _ = hashA.Distance(hashB) return } func Similar(imgA, imgB image.Image) bool { switch { case AverageHashDistance(imgA, imgB) < thAverageHash: return true case DifferenceHashDistance(imgA, imgB) < thDifferenceHash: return true case PerceptionHashDistance(imgA, imgB) < thPerceptionHash: return true default: return false } }