2012-01-05 250 views
0

我無法弄清楚我需要爲ImageMagick放置文件來處理它們。我試圖在我的ASP.NET MVC網站中使用它,並沒有找到我的文件進行處理。如果它確實如何指定它們的輸出位置?imagemagick文件路徑?獲取'系統找不到指定的文件錯誤'

我一直在這裏尋找和我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。這是我們如何創建ProcessStartInfo對象:

// 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爲了得到錯誤信息和結果代碼讀取。之後,我們銷燬這些物品。

對不起,如果這不是100%,我複製它從一個更復雜的OO代碼。

相關問題