Răsfoiți Sursa

`ImageHasher.cs` 中的 `DctHash`

懒得勤快 3 luni în urmă
părinte
comite
e0f229e3f9

+ 50 - 0
BenchmarkTest/ImageHasherTest.cs

@@ -0,0 +1,50 @@
+using BenchmarkDotNet.Attributes;
+using Masuit.Tools.Media;
+
+namespace BenchmarkTest;
+
+[MemoryDiagnoser]
+public class ImageHasherTest
+{
+    [Benchmark]
+    public void AverageHash64()
+    {
+        var hasher = new ImageHasher();
+        hasher.AverageHash64(@"F:\guomo\1未精简\!已粗精简\lingyu69 - 性感法式白蕾丝情趣 大尺度漏奶漏鲍 [71P]\P.jpg");
+    }
+
+    [Benchmark]
+    public void MedianHash256()
+    {
+        var hasher = new ImageHasher();
+        hasher.MedianHash256(@"F:\guomo\1未精简\!已粗精简\lingyu69 - 性感法式白蕾丝情趣 大尺度漏奶漏鲍 [71P]\P.jpg");
+    }
+
+    [Benchmark]
+    public void MedianHash64()
+    {
+        var hasher = new ImageHasher();
+        hasher.MedianHash64(@"F:\guomo\1未精简\!已粗精简\lingyu69 - 性感法式白蕾丝情趣 大尺度漏奶漏鲍 [71P]\P.jpg");
+    }
+
+    [Benchmark]
+    public void DifferenceHash64()
+    {
+        var hasher = new ImageHasher();
+        hasher.DifferenceHash64(@"F:\guomo\1未精简\!已粗精简\lingyu69 - 性感法式白蕾丝情趣 大尺度漏奶漏鲍 [71P]\P.jpg");
+    }
+
+    [Benchmark]
+    public void DifferenceHash256()
+    {
+        var hasher = new ImageHasher();
+        hasher.DifferenceHash256(@"F:\guomo\1未精简\!已粗精简\lingyu69 - 性感法式白蕾丝情趣 大尺度漏奶漏鲍 [71P]\P.jpg");
+    }
+
+    [Benchmark]
+    public void DctHash()
+    {
+        var hasher = new ImageHasher();
+        hasher.DctHash(@"F:\guomo\1未精简\!已粗精简\lingyu69 - 性感法式白蕾丝情趣 大尺度漏奶漏鲍 [71P]\P.jpg");
+    }
+}

+ 1 - 1
BenchmarkTest/Program.cs

@@ -1,4 +1,4 @@
 using BenchmarkDotNet.Running;
 using BenchmarkTest;
 
-BenchmarkRunner.Run<TreeTest>();
+BenchmarkRunner.Run<ImageHasherTest>();

+ 12 - 2
Masuit.Tools.Abstractions/Media/ImageHasher.cs

@@ -656,8 +656,18 @@ public class ImageHasher
     /// <returns>64位hash值</returns>
     public ulong DctHash(string path)
     {
-        using var stream = new FileStream(path, FileMode.Open, FileAccess.Read);
-        return DctHash(stream);
+#if NET6_0_OR_GREATER
+
+        var decoderOptions = new DecoderOptions
+        {
+            TargetSize = new Size(128),
+            SkipMetadata = true
+        };
+        using var image = Image.Load<L8>(decoderOptions, path);
+#else
+        using var image = Image.Load<L8>(path);
+#endif
+        return DctHash(image);
     }
 
     /// <summary>