我需要获取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文件。这也会减慢程序的速度
答案 0 :(得分:2)
我不确定这是否适合您,但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}");
}
你可以优化它,不要读取整个文件,因为边界框在开头。