[英]Exception thrown when reading meta data from .tif file using c# and metadata extractor
[英]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.