пути к файлам imagemagick?Получение 'Система не может найти указанный файл ошибка' - PullRequest
0 голосов
/ 05 января 2012

Я не могу понять, где мне нужно поместить файлы для ImageMagick для их обработки.Я пытаюсь использовать его на своем веб-сайте ASP.NET MVC и не могу найти мои файлы для обработки.И если это так, как мне указать, где они будут выводиться?

Я искал здесь и мне чего-то не хватает: 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 Ответ

1 голос
/ 05 января 2012

Мы делаем что-то похожее, но используем переменные окружения (что выгодно, потому что работает в каждой системе) для запуска cmd.exe, который мы передаем с помощью convert и параметров. Вот как мы создаем объект 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...