懒得勤快 3 anni fa
parent
commit
000e4175c7

+ 1 - 1
Masuit.Tools.Abstractions/Masuit.Tools.Abstractions.csproj

@@ -4,7 +4,7 @@
     <LangVersion>latest</LangVersion>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
     <CodeAnalysisRuleSet />
-    <Version>2.5</Version>
+    <Version>2.5.0.2</Version>
     <Authors>懒得勤快</Authors>
     <Description>Masuit.Tools基础公共库,包含一些常用的操作类,大都是静态类,加密解密,反射操作,Excel简单导出,权重随机筛选算法,分布式短id,表达式树,linq扩展,文件压缩,多线程下载和FTP客户端,硬件信息,字符串扩展方法,日期时间扩展操作,中国农历,大文件拷贝,图像裁剪,验证码,断点续传,集合扩展等常用封装。</Description>
     <Copyright>懒得勤快,长空X</Copyright>

+ 23 - 22
Masuit.Tools.Abstractions/Media/ImageHasher.cs

@@ -35,10 +35,10 @@ public class ImageHasher
     /// </summary>
     /// <param name="pathToImage">图片的文件路径</param>
     /// <returns>64位hash值</returns>
-    public ulong CalculateAverageHash64(string pathToImage)
+    public ulong AverageHash64(string pathToImage)
     {
         using var stream = new FileStream(pathToImage, FileMode.Open, FileAccess.Read);
-        return CalculateAverageHash64(stream);
+        return AverageHash64(stream);
     }
 
     /// <summary>
@@ -46,7 +46,7 @@ public class ImageHasher
     /// </summary>
     /// <param name="sourceStream">读取到的图片流</param>
     /// <returns>64位hash值</returns>
-    public ulong CalculateAverageHash64(Stream sourceStream)
+    public ulong AverageHash64(Stream sourceStream)
     {
         var pixels = _transformer.TransformImage(sourceStream, 8, 8);
         var average = pixels.Sum(b => b) / 64;
@@ -70,10 +70,10 @@ public class ImageHasher
     /// </summary>
     /// <param name="pathToImage">图片的文件路径</param>
     /// <returns>64位hash值</returns>
-    public ulong CalculateMedianHash64(string pathToImage)
+    public ulong MedianHash64(string pathToImage)
     {
         using var stream = new FileStream(pathToImage, FileMode.Open, FileAccess.Read);
-        return CalculateMedianHash64(stream);
+        return MedianHash64(stream);
     }
 
     /// <summary>
@@ -82,7 +82,7 @@ public class ImageHasher
     /// </summary>
     /// <param name="sourceStream">读取到的图片流</param>
     /// <returns>64位hash值</returns>
-    public ulong CalculateMedianHash64(Stream sourceStream)
+    public ulong MedianHash64(Stream sourceStream)
     {
         var pixels = _transformer.TransformImage(sourceStream, 8, 8);
 
@@ -112,10 +112,10 @@ public class ImageHasher
     /// </summary>
     /// <param name="pathToImage">图片的文件路径</param>
     /// <returns>256位hash值,生成一个4长度的数组返回</returns>
-    public ulong[] CalculateMedianHash256(string pathToImage)
+    public ulong[] MedianHash256(string pathToImage)
     {
         using var stream = new FileStream(pathToImage, FileMode.Open, FileAccess.Read);
-        return CalculateMedianHash256(stream);
+        return MedianHash256(stream);
     }
 
     /// <summary>
@@ -124,7 +124,7 @@ public class ImageHasher
     /// </summary>
     /// <param name="sourceStream">读取到的图片流</param>
     /// <returns>256位hash值,生成一个4长度的数组返回</returns>
-    public ulong[] CalculateMedianHash256(Stream sourceStream)
+    public ulong[] MedianHash256(Stream sourceStream)
     {
         var pixels = _transformer.TransformImage(sourceStream, 16, 16);
 
@@ -160,10 +160,10 @@ public class ImageHasher
     /// <see cref="https://segmentfault.com/a/1190000038308093"/>
     /// <param name="pathToImage">图片的文件路径</param>
     /// <returns>64位hash值</returns>
-    public ulong CalculateDifferenceHash64(string pathToImage)
+    public ulong DifferenceHash64(string pathToImage)
     {
         using var stream = new FileStream(pathToImage, FileMode.Open, FileAccess.Read);
-        return CalculateDifferenceHash64(stream);
+        return DifferenceHash64(stream);
     }
 
     /// <summary>
@@ -172,7 +172,7 @@ public class ImageHasher
     /// <see cref="https://segmentfault.com/a/1190000038308093"/>
     /// <param name="sourceStream">读取到的图片流</param>
     /// <returns>64位hash值</returns>
-    public ulong CalculateDifferenceHash64(Stream sourceStream)
+    public ulong DifferenceHash64(Stream sourceStream)
     {
         var pixels = _transformer.TransformImage(sourceStream, 9, 8);
 
@@ -202,10 +202,10 @@ public class ImageHasher
     /// <see cref="https://segmentfault.com/a/1190000038308093"/>
     /// <param name="pathToImage">图片的文件路径</param>
     /// <returns>256位hash值</returns>
-    public ulong[] CalculateDifferenceHash256(string pathToImage)
+    public ulong[] DifferenceHash256(string pathToImage)
     {
         using var stream = new FileStream(pathToImage, FileMode.Open, FileAccess.Read);
-        return CalculateDifferenceHash256(stream);
+        return DifferenceHash256(stream);
     }
 
     /// <summary>
@@ -214,7 +214,7 @@ public class ImageHasher
     /// <see cref="https://segmentfault.com/a/1190000038308093"/>
     /// <param name="sourceStream">读取到的图片流</param>
     /// <returns>256位hash值</returns>
-    public ulong[] CalculateDifferenceHash256(Stream sourceStream)
+    public ulong[] DifferenceHash256(Stream sourceStream)
     {
         var pixels = _transformer.TransformImage(sourceStream, 17, 16);
 
@@ -253,7 +253,7 @@ public class ImageHasher
     /// <see cref="https://segmentfault.com/a/1190000038308093"/>
     /// <param name="sourceStream">读取到的图片流</param>
     /// <returns>64位hash值</returns>
-    public ulong CalculateDctHash(Stream sourceStream)
+    public ulong DctHash(Stream sourceStream)
     {
         lock (_dctMatrixLockObject)
         {
@@ -311,10 +311,10 @@ public class ImageHasher
     /// </summary>
     /// <param name="path">图片的文件路径</param>
     /// <returns>64位hash值</returns>
-    public ulong CalculateDctHash(string path)
+    public ulong DctHash(string path)
     {
         using var stream = new FileStream(path, FileMode.Open, FileAccess.Read);
-        return CalculateDctHash(stream);
+        return DctHash(stream);
     }
 
     /// <summary>
@@ -360,7 +360,6 @@ public class ImageHasher
         }
 
         var c1 = Math.Sqrt(2.0f / size);
-
         for (var j = 0; j < size; j++)
         {
             matrix[0][j] = (float)Math.Sqrt(1.0d / size);
@@ -408,13 +407,15 @@ public class ImageHasher
     {
         var size = mat[0].Length;
         var transpose = new float[size][];
-
         for (var i = 0; i < size; i++)
         {
             transpose[i] = new float[size];
             for (var j = 0; j < size; j++)
+            {
                 transpose[i][j] = mat[j][i];
+            }
         }
+
         return transpose;
     }
 
@@ -424,7 +425,7 @@ public class ImageHasher
     /// <param name="hash1">图像1的hash</param>
     /// <param name="hash2">图像2的hash</param>
     /// <returns>相似度范围:[0,1]</returns>
-    public static float CompareHashes(ulong hash1, ulong hash2)
+    public static float Compare(ulong hash1, ulong hash2)
     {
         // hash异或运算
         var hashDifference = hash1 ^ hash2;
@@ -442,7 +443,7 @@ public class ImageHasher
     /// <param name="hash1">图像1的hash</param>
     /// <param name="hash2">图像2的hash</param>
     /// <returns>相似度范围:[0,1]</returns>
-    public static float CompareHashes(ulong[] hash1, ulong[] hash2)
+    public static float Compare(ulong[] hash1, ulong[] hash2)
     {
         // 检查两个图像的hash长度是否一致
         if (hash1.Length != hash2.Length)

+ 1 - 1
Masuit.Tools.Abstractions/Media/ImageSharpTransformer.cs

@@ -8,7 +8,7 @@ using Size = SixLabors.ImageSharp.Size;
 namespace Masuit.Tools.Media;
 
 /// <summary>
-/// 使用ImageSharp实现IImageTransformer接口进行图像变换
+/// 使用ImageSharp进行图像变换
 /// </summary>
 public class ImageSharpTransformer : IImageTransformer
 {

+ 11 - 0
Masuit.Tools.Abstractions/Strings/ValidateCode.cs

@@ -105,5 +105,16 @@ namespace Masuit.Tools.Strings
             context.Response.ContentType = ContentType.Jpeg;
             return stream.ToArray();
         }
+
+        /// <summary>
+        /// 字符串宽度
+        /// </summary>
+        /// <param name="s"></param>
+        /// <param name="fontSize"></param>
+        /// <returns></returns>
+        public static float StringWidth(this string s, int fontSize = 1)
+        {
+            return TextMeasurer.Measure(s, new TextOptions(SystemFonts.Families.FirstOrDefault(f => f.Name == "Microsoft YaHei UI").CreateFont(fontSize))).Width;
+        }
     }
 }

+ 1 - 1
Masuit.Tools.AspNetCore/Masuit.Tools.AspNetCore.csproj

@@ -18,7 +18,7 @@
         <LangVersion>latest</LangVersion>
         <RepositoryType>Github</RepositoryType>
         <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
-        <Version>1.1</Version>
+        <Version>1.1.0.2</Version>
         <FileVersion>1.0</FileVersion>
         <Company>masuit.com</Company>
         <AssemblyVersion>1.0</AssemblyVersion>

+ 1 - 1
Masuit.Tools.Core/Masuit.Tools.Core.csproj

@@ -18,7 +18,7 @@ github:https://github.com/ldqk/Masuit.Tools
         <UserSecretsId>830c282f-f7c1-42be-8651-4cd06ac8e73f</UserSecretsId>
         <RepositoryType>Github</RepositoryType>
         <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
-        <Version>2.5</Version>
+        <Version>2.5.0.2</Version>
         <FileVersion>2.4.5.6</FileVersion>
         <Company>masuit.com</Company>
         <AssemblyVersion>2.4.5.6</AssemblyVersion>

+ 1 - 1
Masuit.Tools.Net45/package.nuspec

@@ -2,7 +2,7 @@
 <package>
   <metadata>
     <id>Masuit.Tools.Net45</id>
-    <version>2.5</version>
+    <version>2.5.0.2</version>
     <title>Masuit.Tools</title>
     <authors>懒得勤快</authors>
     <owners>masuit.com</owners>

+ 1 - 1
Masuit.Tools/Masuit.Tools.csproj

@@ -187,7 +187,7 @@
       <Version>1.0.0-beta14</Version>
     </PackageReference>
     <PackageReference Include="StackExchange.Redis">
-      <Version>2.6.45</Version>
+      <Version>2.6.48</Version>
     </PackageReference>
     <PackageReference Include="System.ValueTuple">
       <Version>4.5.0</Version>

+ 1 - 1
Masuit.Tools/package.nuspec

@@ -2,7 +2,7 @@
 <package>
   <metadata>
     <id>Masuit.Tools.Net</id>
-    <version>2.5</version>
+    <version>2.5.0.2</version>
     <title>Masuit.Tools</title>
     <authors>懒得勤快</authors>
     <owners>masuit.com</owners>