From cd8a2c123144852700b309c075ef500c1747c67d Mon Sep 17 00:00:00 2001 From: nsnail Date: Thu, 19 Jan 2023 20:38:22 +0800 Subject: [PATCH] chore --- ImageOptimize.csx | 45 +++++++++++++++++++++++++++++++++ NSCodeAnalysis.sln.DotSettings | 4 --- logo.png | Bin 9347 -> 4041 bytes 3 files changed, 45 insertions(+), 4 deletions(-) create mode 100644 ImageOptimize.csx diff --git a/ImageOptimize.csx b/ImageOptimize.csx new file mode 100644 index 0000000..8e6aca7 --- /dev/null +++ b/ImageOptimize.csx @@ -0,0 +1,45 @@ +/* + for %%i in (*.png) do pngquant %%i --force --output %%i --skip-if-larger + for %%i in (*.jpg) do jpegtran -copy none -optimize -perfect %%i %%i + * + */ + + var files = Directory.EnumerateFiles(".", "*.png" + , new EnumerationOptions { + RecurseSubdirectories = true + , AttributesToSkip = FileAttributes.ReparsePoint + , IgnoreInaccessible = true + }) + .ToArray(); + + + Parallel.ForEach(files, file => { + var startInfo = new ProcessStartInfo { + FileName = "pngquant" + , Arguments + = $"\"{file}\" --force --output \"{file}\" --skip-if-larger" + }; + using var p = Process.Start(startInfo); + p.WaitForExit(); + Console.WriteLine($"{file}: {p.ExitCode}"); + }); + + files = new[] { "*.jpg", "*.jpeg" } + .SelectMany(x => Directory.EnumerateFiles( + ".", x + , new EnumerationOptions { + RecurseSubdirectories = true + , AttributesToSkip = FileAttributes.ReparsePoint + , IgnoreInaccessible = true + })) + .ToArray(); + + Parallel.ForEach(files, file => { + var startInfo = new ProcessStartInfo { + FileName = "jpegtran" + , Arguments = $"-copy none -optimize -perfect \"{file}\" \"{file}\"" + }; + using var p = Process.Start(startInfo); + p.WaitForExit(); + Console.WriteLine($"{file}: {p.ExitCode}"); + }); \ No newline at end of file diff --git a/NSCodeAnalysis.sln.DotSettings b/NSCodeAnalysis.sln.DotSettings index 5f4f66e..6bb3515 100644 --- a/NSCodeAnalysis.sln.DotSettings +++ b/NSCodeAnalysis.sln.DotSettings @@ -2,10 +2,6 @@ DO_NOT_SHOW DO_NOT_SHOW NEVER - True - True - True - True False 1 1 diff --git a/logo.png b/logo.png index d1ca974f7386ddd2d3840920309e20eece91b66c..35c2fb514a83127b0035e2da1bf6e2c3000344fb 100644 GIT binary patch literal 4041 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 Y77YV$_|-lD{>%_*!S&UvRZ)@u0W-U7DF6Tf literal 9347 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 gpKX