运行控制台命令以从Unity 3d中使用ImageMagick进行转换

时间:2012-11-08 13:23:36

标签: windows shell imagemagick cmd

民间!

所以,我正试图将PDF转换为.png,正如标题所暗示的那样。我正在使用ImageMagick软件包。我想使用这个软件包从.NET 3d项目中即时转换pdf到pngs - 这样应用程序可以在需要的时候在游戏中将PDF显示为.png纹理,但是仍然可以将它们保存为较小的PDF文件文件大小。我不太清楚我在这里做错了什么 - 但是当我在Unity中运行它时,我得到的只是一个没有我命令的开放式cmd提示符。在这里,有什么东西显而易见吗?这是代码:

using UnityEngine;
using System.Collections;
using System.IO;
using System.Reflection;
using System.Security.Policy;

public class CommandLineTest : MonoBehaviour {

    // Use this for initialization
    void Start () {
        string convertedDirName = "ConvertedPDFs";
        string currDir = System.Environment.CurrentDirectory;
        System.IO.Directory.CreateDirectory(currDir + @"\" + convertedDirName);

        string strCmdText;
    strCmdText= @"/c " + currDir + @"\ImageMagick\convert.exe " + currDir + @"\PDFs\Appointment.pdf " + currDir + @"\" + convertedDirName + @"\" + "Appointment.png";
        System.Diagnostics.Process.Start("CMD.exe",strCmdText);
        //ImageMagick
        print(strCmdText);
    }

}

当最后的print语句运行时,它会输出以下字符串:c / convert / c F:\ Documents and Settings \ Administrator \ Desktop \ ImageMagickTest \ ImageMagick \ convert.exe F:\ Documents and Settings \ Administrator \ Desktop \ ImageMagickTest \ PDFs \ Appointment.pdf F:\ Documents and Settings \ Administrator \ Desktop \ ImageMagickTest \ ConvertedPDFs \ Appointment.png

对你来说,有什么事情显然是错误的吗?我应该提一下,ImageMagick的转换应用程序实际上并没有“安装”在我的系统上 - 我只是使用“便携式”版本并将其抛入我的项目文件夹中。所以我希望“转换”命令行仍然有效。这是否意味着我无法通过dos提示访问它?如果我不能,那么我如何使用imagemagick将图像传递给“转换”程序,只要我知道它将在我项目的文件夹中?

编辑:有人建议我访问convert.exe而不是cmd.exe,并尝试以这种方式将图像路径提供给它。所以这是我尝试的第二种方式:

strCmdText= currDir + @"\PDFs\Appointment.pdf" + " " + currDir + @"\" + convertedDirName + @"\" + "Appointment.png";
        System.Diagnostics.Process.Start(currDir + @"\ImageMagick\convert.exe",strCmdText);

1 个答案:

答案 0 :(得分:1)

尝试使用其他一些命令(如dir)来确定您在文件系统中的位置以及出错的地方。

另外请记住,如果您使用的是便携版,并且它不在您的路径中,您将必须从它所在的目录中执行它。