From bbdc296cbd024fe82deac8a9815b0fc7fcb1a1f2 Mon Sep 17 00:00:00 2001 From: Jan Bader Date: Mon, 4 Dec 2023 22:59:55 +0100 Subject: [PATCH] Calculate dhash for jpgs --- file.go | 17 +++++++++++++++++ filesmap.go | 5 +++++ go.mod | 2 ++ go.sum | 4 ++++ 4 files changed, 28 insertions(+) diff --git a/file.go b/file.go index f6e5d2a..6df9a36 100644 --- a/file.go +++ b/file.go @@ -3,10 +3,14 @@ package main import ( "crypto/sha1" "encoding/base64" + "image/jpeg" "io" "os" "path/filepath" "strconv" + "strings" + + "github.com/corona10/goimagehash" ) func remove(path string) { @@ -48,6 +52,19 @@ func calculateHash(path string) (string, error) { } defer f.Close() + if strings.HasSuffix(path, ".jpg") { + img, err := jpeg.Decode(f) + if err != nil { + return "", err + } + hash, err := goimagehash.DifferenceHash(img) + if err != nil { + return "", err + } + + return hash.ToString(), nil + } + h := sha1.New() if _, err := io.Copy(h, f); err != nil { return "", err diff --git a/filesmap.go b/filesmap.go index 2083db5..eed8b27 100644 --- a/filesmap.go +++ b/filesmap.go @@ -6,6 +6,7 @@ import ( "log" "os" "path/filepath" + "strings" "sync" "github.com/vbauerster/mpb/v7" @@ -88,6 +89,10 @@ func (fm *FilesMap) WalkDirectories() int { return nil } + if !strings.HasSuffix(path, ".jpg") { + size = 123456789123456 + } + fm.incomingBar.Increment() countFiles++ fm.incomingBar.SetTotal(int64(countFiles), false) diff --git a/go.mod b/go.mod index 2c3d849..574656c 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,9 @@ require github.com/vbauerster/mpb/v7 v7.0.5 require ( github.com/VividCortex/ewma v1.2.0 // indirect github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d // indirect + github.com/corona10/goimagehash v1.1.0 // indirect github.com/mattn/go-runewidth v0.0.13 // indirect + github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 // indirect github.com/rivo/uniseg v0.2.0 // indirect golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c // indirect ) diff --git a/go.sum b/go.sum index bd72df8..a4f592a 100644 --- a/go.sum +++ b/go.sum @@ -2,8 +2,12 @@ github.com/VividCortex/ewma v1.2.0 h1:f58SaIzcDXrSy3kWaHNvuJgJ3Nmz59Zji6XoJR/q1o github.com/VividCortex/ewma v1.2.0/go.mod h1:nz4BbCtbLyFDeC9SUHbtcT5644juEuWfUAUnGx7j5l4= github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d h1:licZJFw2RwpHMqeKTCYkitsPqHNxTmd4SNR5r94FGM8= github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d/go.mod h1:asat636LX7Bqt5lYEZ27JNDcqxfjdBQuJ/MM4CN/Lzo= +github.com/corona10/goimagehash v1.1.0 h1:teNMX/1e+Wn/AYSbLHX8mj+mF9r60R1kBeqE9MkoYwI= +github.com/corona10/goimagehash v1.1.0/go.mod h1:VkvE0mLn84L4aF8vCb6mafVajEb6QYMHl2ZJLn0mOGI= github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU= github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 h1:zYyBkD/k9seD2A7fsi6Oo2LfFZAehjjQMERAvZLEDnQ= +github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8= github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/vbauerster/mpb/v7 v7.0.5 h1:/CQxyoPjdlON6kqqq3Uq3UUw5tFjuBCjOmLQYaYvBmM=