繁体   English   中英

用于eps文件的c#元数据提取器

[英]c# meta data extractor for eps file

我需要获取eps文件的宽度和高度。

我尝试过https://github.com/drewnoakes/metadata-extractor

但不适用于eps文件。

所以我用了exiftool.exe并在程序上运行它。

但是程序很慢。 因为它为每个eps文件运行程序(exiftool.exe)。

有什么方法可以用来更快地获取eps文件的宽度和高度? 谢谢

以下是我获取图像宽度和高度的代码

System.Diagnostics.Process pProcess = new System.Diagnostics.Process();
                            string filename = tempPath;
                            pProcess.StartInfo.FileName = System.IO.Path.GetDirectoryName(Environment.GetCommandLineArgs()[0]) + "\\exiftool.exe";
                            string toolPath = @"" + "\"" + filename + "\"";
                            pProcess.StartInfo.Arguments = toolPath;
                            pProcess.StartInfo.CreateNoWindow = true;
                            pProcess.StartInfo.UseShellExecute = false;
                            pProcess.StartInfo.RedirectStandardOutput = true;
                            pProcess.Start();
                            string strOutput = pProcess.StandardOutput.ReadToEnd();
                            pProcess.WaitForExit();
                            string source = strOutput;

先生,如果我将其转换为eps文件,我需要设置其密度以获得高质量的转换图像。 如果我这样做。 转换后的图像的高度和宽度将不同。 我使用了ImageMagick dll。 为了那个原因。 并且该链接还运行一个exe文件。 这也会减慢程序速度

我不确定这是否适合您,但EPS有标签

%%BoundingBox: 0 0 350 350

如果您阅读该文件,则可以使用它。

例如

var eps = File.ReadAllLines(path).FirstOrDefault(l => l.StartsWith("%%BoundingBox:"));
if (eps != null)
{
    var dimensions = eps.Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries)
        .ToList()
        .Skip(1)
        .Select(s => Convert.ToInt32(s))
        .ToList();
    var width = dimensions[2] - dimensions[0];
    var height = dimensions[3] - dimensions[1];
    Console.WriteLine($"{width} {height}");
}

您可以优化此方法,以免读取整个文件,因为边界框位于开头。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM