Straper/Program.cs

(开头部分) 6KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using Microsoft.International.Converters.TraditionalChineseToSimplifiedConverter;
using Microsoft.VisualBasic.FileIO;
using Microsoft.Win32;
using SixLabors.ImageSharp.Metadata.Profiles.Exif;
using System.Text.RegularExpressions;
using SearchOption = System.IO.SearchOption;

Console.WriteLine("欢迎使用清除图像exif信息小工具——ExifStraper by 懒得勤快\n\n");
var dirs = new List<string>();
if (args.Length > 0)
{
    if (args[0] == "reg-menu")
    {
        RegContextMenu();
        return;
    }
    dirs.AddRange(args);
}
else
{
    var dir = "";
    while (string.IsNullOrWhiteSpace(dir) || !Directory.Exists(dir))
    {
        Console.WriteLine("请将待处理文件夹拖放到此处:");
        dir = Console.ReadLine().Trim('"');
        if (dir == "reg-menu")
        {
            RegContextMenu();
            return;
        }
    }
    dirs.Add(dir);
}

Console.WriteLine("正在读取文件目录树......");
dirs.SelectMany(dir => Directory.EnumerateFiles(dir, "*", SearchOption.AllDirectories)).Where(s => Regex.IsMatch(s, "(jpg|jpeg|bmp)$", RegexOptions.IgnoreCase)).AsParallel().WithDegreeOfParallelism(32).ForAll(file =>
{
    Console.WriteLine("正在处理:" + file);
    try
    {
        bool modified = false;
        using var image = Image.Load<Rgba64>(file);
        if (image.Metadata.ExifProfile != null)
        {
            if (args.Contains("-a"))
            {
                foreach (var exifValue in image.Metadata.ExifProfile.Values)
                {
                    if (exifValue.DataType is ExifDataType.Ascii or ExifDataType.Byte or ExifDataType.Undefined or ExifDataType.Unknown && image.Metadata.ExifProfile.RemoveValue(exifValue.Tag))
                    {
                        modified = true;
                    }
                }
            }
            else
            {
                image.Metadata.ExifProfile.RemoveValue(ExifTag.ImageDescription);
                image.Metadata.ExifProfile.RemoveValue(ExifTag.Artist);
                image.Metadata.ExifProfile.RemoveValue(ExifTag.Copyright);
                image.Metadata.ExifProfile.RemoveValue(ExifTag.XPTitle);
后面还有 86 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。