2012-01-05 23 views
0

ImageMagickでファイルを処理するためにファイルを配置する必要がある場所を特定できません。私は自分のASP.NET MVC Webサイトでそれを使用しようとしています。それがどうすれば出力されるのかを指定できますか?イメージファイルファイルパス? 「システムはファイル指定のエラーを見つけることができません」

私はここで探していると私は何か欠けていることがMUT:ここ http://www.imagemagick.org/script/command-line-processing.php

をプロセスを呼び出すために私のコードです:

//Location of the ImageMagick applications 
     private const string pathImageMagick = @"C:\Program Files\ImageMagick-6.7.3-8"; 
     private const string appImageMagick = "MagickCMD.exe"; 

CallImageMagick("convert -density 400 SampleCtalog.pdf -scale 2000x1000 hi-res%d.jpg"); 


private static string CallImageMagick(string fileArgs) 
     { 
      ProcessStartInfo startInfo = new ProcessStartInfo 
      { 
       Arguments = fileArgs, 
       WorkingDirectory = pathImageMagick, 
       FileName = appImageMagick, 
       UseShellExecute = false, 
       CreateNoWindow = true, 
       RedirectStandardOutput = true 
      }; 
      using (Process exeProcess = Process.Start(startInfo)) 
      { 
       string IMResponse = exeProcess.StandardOutput.ReadToEnd(); 
       exeProcess.WaitForExit(); 
       exeProcess.Close(); 
       return !String.IsNullOrEmpty(IMResponse) ? IMResponse : "True"; 
      } 
     } 

答えて

1

我々は(似た何かをするが、環境変数を使用しています有益なのは、すべてのシステム上で動作するため)、convertとパラメータを使用してcmd.exeを実行することです。

// Your command 
string command = "convert..."; 

ProcessStartInfo procStartInfo = new ProcessStartInfo {CreateNoWindow = true}; 
string fileName = Environment.GetEnvironmentVariable("ComSpec"); 
if (String.IsNullOrEmpty(fileName)) 
{ 
    // The "ComSpec" environment variable is not present 
    fileName = Environment.GetEnvironmentVariable("SystemRoot"); 
    if (!String.IsNullOrEmpty(fileName)) 
    { 
     // Try "%SystemRoot%\system32\cmd.exe" 
     fileName = Path.Combine(Path.Combine(fileName, "system32"), "cmd.exe"); 
    } 
    if ((String.IsNullOrEmpty(fileName)) || (!File.Exists(fileName))) 
    { 
     // If the comd.exe is not present, let Windows try to find it 
     fileName = "cmd"; 
    } 
} 
procStartInfo.FileName = fileName; 
procStartInfo.RedirectStandardInput = true; 
procStartInfo.RedirectStandardOutput = true; 
procStartInfo.UseShellExecute = false; 
Process proc = Process.Start(procStartInfo); 

proc.StandardInput.WriteLine(command); 
proc.StandardInput.Flush(); 

はその後、我々は、エラーメッセージと結果コードを得るためにproc.StandardOutputから読み取る:これは私たちがProcessStartInfoオブジェクトを作成する方法です。その後、オブジェクトを破壊します。

申し訳ありませんこれが100%でない場合は、より複雑なOOコードからコピーしました。

関連する問題