将ProcessStartInfo与ImageMagick的Mogrify一起使用

时间:2016-02-08 17:03:42

标签: c# windows image imagemagick

将我的头发撕成一些应该非常简单的东西!我已经在我的shell上使用了CD:\ Program Files \ ImageMagick-6.9.0-Q16,并使用了以下命令字符串,该字符串适用于我的机器;它创建了预期的输出图像,没问题:

  

转换" C:\ Users \ someguy \ Debug \ test_in.jpg" -resize 75x75 -colorspace   RGB" C:\ Users \ someguy \ Debug \ test_out.jpg"

我正在尝试使用C#中的简单测试应用程序自动执行此操作:

var proc = new Process
            {
                StartInfo = new ProcessStartInfo()
                {
                    //WorkingDirectory = @"C:\Program Files\ImageMagick-6.9.0-Q16\",
                    Arguments = //_arguments,
                    "convert \"" + InputPath + "\" -resize 75x75 \"" + OutputPath + "\""
                    ,
                    UseShellExecute = _useShellExecute,
                    RedirectStandardError = _redirectStandardError,
                    //RedirectStandardOutput = _redirectStandardOutput,
                    //CreateNoWindow = _createNoWindow,
                    //Verb = _verb,
                    FileName = @"C:\Program Files\ImageMagick-6.9.0-Q16\" + "convert.exe"
                }
            };
            var test = proc.StartInfo.Arguments.ToString();
            proc.Start();
            string error = proc.StandardError.ReadToEnd();
            proc.WaitForExit();

我尝试了几种这样的排列,使用convert.exe,mogrify.exe,动词为" runas",工作目录设置为on或off ...(请参阅注释掉的内容 - 我已经尝试过设置它了)我已经提到how to use imageMagick with C#但我仍然遇到同样的错误:

  

mogrify.exe:无法打开图片convert': No such file or directory @ error/blob.c/OpenBlob/2709. mogrify.exe: no decode delegate for this image format' @ error / construct.c / ReadImage / 501。 mogrify.exe:   无法打开图像`C:\ Users \ someguy \ Debug \ test_out.jpg':没有这样的   文件或目录@ error / blob.c / OpenBlob / 2709。

我觉得我在这里遗漏了一些非常基本的东西,但我现在还不知道。有人可以提出建议吗?

1 个答案:

答案 0 :(得分:0)

var proc = new Process
            {
                StartInfo = new ProcessStartInfo(_imageMagickFile)
                {
                    //WorkingDirectory = @"C:\Program Files\ImageMagick-6.9.0-Q16\",
                    Arguments = //_arguments,
                    "" + InputPath + " -resize 75x75 " + OutputPath + ""
                    ,
                    UseShellExecute = _useShellExecute,
                    RedirectStandardError = _redirectStandardError,
                    RedirectStandardOutput = _redirectStandardOutput,
                    CreateNoWindow = _createNoWindow,
                    Verb = _verb,
                    FileName = _imageMagickFile
                }
            };
            var test = proc.StartInfo.Arguments.ToString();
            proc.Start();
            string error = proc.StandardError.ReadToEnd();
            proc.WaitForExit();

我真的不确定为什么这会起作用而不是原来的问题,但确实如此。使用convert.exe确实是正确的,而不是mogrify.exe。作为FYI,其他参数是ShellExecute = false,Redirect std err / out设置为true,动词是runas。