浏览代码

修正压缩图片的bug

懒得勤快 5 年之前
父节点
当前提交
2df421d3b7

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

@@ -7,7 +7,7 @@
     <LangVersion>8.0</LangVersion>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
     <CodeAnalysisRuleSet />
-    <Version>2.3.1.8</Version>
+    <Version>2.3.1.9</Version>
     <Authors>懒得勤快</Authors>
     <Description>Masuit.Tools基础公共库</Description>
     <Copyright>懒得勤快,长空X</Copyright>
@@ -20,9 +20,9 @@
     <RepositoryType>Github</RepositoryType>
     <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
     <PackageRequireLicenseAcceptance>False</PackageRequireLicenseAcceptance>
-    <FileVersion>2.3.1.8</FileVersion>
+    <FileVersion>2.3.1.9</FileVersion>
     <Company>masuit.com</Company>
-    <AssemblyVersion>2.3.1.8</AssemblyVersion>
+    <AssemblyVersion>2.3.1.9</AssemblyVersion>
     <PackageLicenseUrl>https://github.com/ldqk/Masuit.Tools/blob/master/LICENSE</PackageLicenseUrl>
   </PropertyGroup>
 

+ 13 - 17
Masuit.Tools.Abstractions/Media/ImageUtilities.cs

@@ -529,11 +529,11 @@ namespace Masuit.Tools.Media
         /// </summary>
         /// <param name="sFile">原图片地址</param>
         /// <param name="dFile">压缩后保存图片地址</param>
-        /// <param name="flag">压缩质量(数字越小压缩率越高)1-100</param>
+        /// <param name="quality">压缩质量(数字越小压缩率越高)1-100</param>
         /// <param name="size">压缩后图片的最大大小</param>
         /// <param name="sfsc">是否是第一次调用</param>
         /// <returns></returns>
-        public static bool CompressImage(string sFile, string dFile, int flag = 90, int size = 1024, bool sfsc = true)
+        public static bool CompressImage(string sFile, string dFile, byte quality = 90, int size = 1024, bool sfsc = true)
         {
             //如果是第一次调用,原始图像的大小小于要压缩的大小,则直接复制文件,并且返回true
             var firstFileInfo = new FileInfo(sFile);
@@ -578,10 +578,8 @@ namespace Masuit.Tools.Media
             g.DrawImage(iSource, new Rectangle((dWidth - sW) / 2, (dHeight - sH) / 2, sW, sH), 0, 0, iSource.Width, iSource.Height, GraphicsUnit.Pixel);
 
             //以下代码为保存图片时,设置压缩质量
-            using EncoderParameters ep = new EncoderParameters();
-            long[] qy = new long[1];
-            qy[0] = flag;//设置压缩的比例1-100
-            using EncoderParameter eParam = new EncoderParameter(Encoder.Quality, qy);
+            using var ep = new EncoderParameters();
+            using var eParam = new EncoderParameter(Encoder.Quality, new long[] { quality });
             ep.Param[0] = eParam;
             try
             {
@@ -591,10 +589,10 @@ namespace Masuit.Tools.Media
                 {
                     bmp.Save(dFile, jpegIcIinfo, ep);//dFile是压缩后的新路径
                     FileInfo fi = new FileInfo(dFile);
-                    if (fi.Length > 1024 * size)
+                    if (fi.Length > 1024 * size && quality > 10)
                     {
-                        flag = flag - 10;
-                        CompressImage(sFile, dFile, flag, size, false);
+                        quality -= 10;
+                        CompressImage(sFile, dFile, quality, size, false);
                     }
                 }
                 else
@@ -614,11 +612,11 @@ namespace Masuit.Tools.Media
         /// </summary>
         /// <param name="src">原图片文件流</param>
         /// <param name="dest">压缩后图片文件流</param>
-        /// <param name="flag">压缩质量(数字越小压缩率越高)1-100</param>
+        /// <param name="quality">压缩质量(数字越小压缩率越高)1-100</param>
         /// <param name="size">压缩后图片的最大大小</param>
         /// <param name="sfsc">是否是第一次调用</param>
         /// <returns></returns>
-        public static bool CompressImage(Stream src, Stream dest, int flag = 90, int size = 1024, bool sfsc = true)
+        public static bool CompressImage(Stream src, Stream dest, byte quality = 90, int size = 1024, bool sfsc = true)
         {
             //如果是第一次调用,原始图像的大小小于要压缩的大小,则直接复制文件,并且返回true
             if (sfsc && src.Length < size * 1024)
@@ -663,9 +661,7 @@ namespace Masuit.Tools.Media
 
             //以下代码为保存图片时,设置压缩质量
             using var ep = new EncoderParameters();
-            long[] qy = new long[1];
-            qy[0] = flag;//设置压缩的比例1-100
-            using EncoderParameter eParam = new EncoderParameter(Encoder.Quality, qy);
+            using var eParam = new EncoderParameter(Encoder.Quality, new long[] { quality });
             ep.Param[0] = eParam;
             try
             {
@@ -674,10 +670,10 @@ namespace Masuit.Tools.Media
                 if (jpegIcIinfo != null)
                 {
                     bmp.Save(dest, jpegIcIinfo, ep);//dFile是压缩后的新路径
-                    if (dest.Length > 1024 * size)
+                    if (dest.Length > 1024 * size && quality > 10)
                     {
-                        flag = flag - 10;
-                        CompressImage(src, dest, flag, size, false);
+                        quality -= 10;
+                        CompressImage(src, dest, quality, size, false);
                     }
                 }
                 else

+ 1 - 1
Masuit.Tools.Abstractions/Net/PartialDownloader.cs

@@ -152,7 +152,7 @@ namespace Masuit.Tools.Net
 
         void DownloadProcedure(Action<HttpWebRequest> config)
         {
-            using (var file = new FileStream(FullPath, FileMode.Create, FileAccess.ReadWrite))
+            using (var file = new FileStream(FullPath, FileMode.Create, FileAccess.ReadWrite, FileShare.Delete))
             {
                 var sw = new Stopwatch();
                 if (WebRequest.Create(Url) is HttpWebRequest req)

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

@@ -20,10 +20,10 @@
     <UserSecretsId>830c282f-f7c1-42be-8651-4cd06ac8e73f</UserSecretsId>
     <RepositoryType>Github</RepositoryType>
     <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
-    <Version>2.3.1.8</Version>
-    <FileVersion>2.3.1.8</FileVersion>
+    <Version>2.3.1.9</Version>
+    <FileVersion>2.3.1.9</FileVersion>
     <Company>masuit.com</Company>
-    <AssemblyVersion>2.3.1.8</AssemblyVersion>
+    <AssemblyVersion>2.3.1.9</AssemblyVersion>
     <Authors>懒得勤快X</Authors>
     <RepositoryUrl>https://github.com/ldqk/Masuit.Tools</RepositoryUrl>
   </PropertyGroup>

二进制
Masuit.Tools/Properties/AssemblyInfo.cs


+ 2 - 2
Masuit.Tools/package.nuspec

@@ -4,7 +4,7 @@
     <!--*-->
     <id>Masuit.Tools.Net</id>
     <!--*-->
-    <version>2.3.1.8</version>
+    <version>2.3.1.9</version>
     <title>Masuit.Tools</title>
     <!--*-->
     <authors>masuit.com</authors>
@@ -22,7 +22,7 @@
     <copyright>Copyright ©  懒得勤快</copyright>
     <tags>Masuit.Tools,工具库,Utility,Crypt,Extensions</tags>
     <dependencies>
-      <dependency id="Masuit.Tools.Abstractions" version="2.3.1.8" />
+      <dependency id="Masuit.Tools.Abstractions" version="2.3.1.9" />
     </dependencies>
   </metadata>
 </package>