2014-10-21 3 views
0

M 주요 목표는 일련의 .eps 파일을 가져 와서 ImageMagick 및 GhostScript를 사용하여 .jpg로 변환하는 것입니다. ImageMagick과 GhostScript가 모두 Windows 환경에 설치되어 있습니다. ImageMagick의 변환 명령을 Java에서 Process with no luck을 사용하여 참조하고 있습니다. \ 프로그램 파일 \ ImageMagick를-6.8.9-Q16을하고 다음 명령을 사용 : 윈도우의 cmd 도구를 사용하여, 나는이 성공적으로 C로 이동하여 JPEG에 EPS를 변환 자바에서ImageMagick의 EPS가 JPEG로 변환되지 않습니다.

convert Raw\R_GiftcardSizeNew3x5.eps Converted\R_GiftcardSizeNew3x5.jpg 

을, 나는 거의 사용 \ 프로그램 파일 \ ImageMagick를-6.8.9-Q16 \ 벌거 벗은 와인 \ 원시 와 목적지 나는 변환하고 다음 코드에서 동일한 명령 : C 를 내 파일을 잡으려고 노력 메신저

public void convertEPStoJPG() 
{ //commands 
    ArrayList<String> cmds = new ArrayList<String>(); 
    //absolute file paths of eps files retrieved using a helper method 
    ArrayList<String> filePaths = this.getFilePaths(); 
    //beginning cmd line calls 
    cmds.add("cmd.exe"); 
    cmds.add("/c"); 
    cmds.add("cd C:\\Program Files\\ImageMagick-6.8.9-Q16\\"); 

    for (int i = 0; i < filePaths.size(); i++) 
    { 
     //conversion calls 
     String tempPath = filePaths.get(i); 
     //shortening path name 
     tempPath = tempPath.substring(tempPath.lastIndexOf("\\") + 1, tempPath.length()); 

     //adding command of "convert Raw\\image.eps Converted\\image.jpg" 
     cmds.add("convert \\Naked Wines\\Raw\\" + tempPath + " \\Naked Wines\\Converted\\" + 
     tempPath.substring(0,tempPath.length() - 3) + "jpg"); 
    } 
    //building process with commands 
    ProcessBuilder pb = new ProcessBuilder(cmds); 
    Process process; 
    try {  
     pb.redirectErrorStream(true); 
     //executing commands 
     process = pb.start(); 

     BufferedReader r = new BufferedReader(new InputStreamReader(process.getInputStream())); 
     String line; 
     while (true) { 
      line = r.readLine(); 
      if (line == null) { break; } 
      //print output from command execution 
      System.out.println(line); 
     } 
    } catch (Exception e) { 

     e.printStackTrace(); 
    } 
} 

은 to는 입니다. C : \ Program Fi les \ ImageMagick-6.8.9-Q16 \ Naked Wines \ Convert.

"지정한 경로를 찾을 수 없습니다"라는 오류 메시지가 나타납니다.. How to override Windows' convert command by ImageMagick's one?과 같이 이전에 대답 한 질문을 보면 사람들은 Windows convert 명령을 무시해야한다고 제안합니다. 이것이 오류의 원인이 될 것인가, 또는 내가 누락 된 것이 있습니까? 나는 ImageMagick을 처음 접했고 뭔가를 놓쳤거나 오해했을 수도있다.

답변

1

ImageMagick 명령 줄에 대한 순수 자바 인터페이스 인 Im4Java를 사용하여 다른 방식으로이 문제에 접근했습니다. http://im4java.sourceforge.net/#download을 통해 라이브러리를 설치했습니다.

public void convertESPtoJPG() 
{ 
    //initialize ImageMagick operation 
    IMOperation op = new IMOperation(); 

    //setting my path allows us to use ImageMagicks "convert" vs. Windows "convert" 
    String myPath="C:\\Program Files\\ImageMagick-6.8.9-Q16"; 
    ProcessStarter.setGlobalSearchPath(myPath); 

    op.addImage(); //in 
    op.addImage(); //out 
    ConvertCmd cmd = new ConvertCmd(); 

    //filter out files for eps files, and load the files using included FilenameLoader 
    ExtensionFilter filter = new ExtensionFilter("eps"); 
    FilenameLoader loader = new FilenameLoader(filter); 
    List<String> files = loader.loadFilenames("C:\\Program Files\\ImageMagick-6.8.9- 
Q16\\NakedWines\\Raw\\"); 

    //what we plan on converting our eps files to 
    FilenamePatternResolver resolver = new FilenamePatternResolver("%P/%f.jpg"); 

    //iterate through loaded files 
    for (String img: files) 
    { 
     try { 
      //execute our convert commands 
      cmd.run(op,img,resolver.createName(img)); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

나는이 방법이 더 기대뿐만 아니라 이해하기가 훨씬 쉬울 발견 : 여기 JPG로 EPS를 변환 내 코드입니다.

관련 문제