从Java调用Python进程(执行tycat术语图像显示实用程序)不起作用
我基本上希望从Java主程序类将图像显示到控制台终端。图像应仅在主终端控制台中显示,不得打开新的图像显示实用程序窗口(即imagemagick、eog等) 我尝试了以下解决方法:以下Python代码(display_image.py)启动了tycat/terminology image display实用程序,该实用程序成功地在控制台终端中显示了一个图像:从Java调用Python进程(执行tycat术语图像显示实用程序)不起作用,java,python,bash,unix,terminology,Java,Python,Bash,Unix,Terminology,我基本上希望从Java主程序类将图像显示到控制台终端。图像应仅在主终端控制台中显示,不得打开新的图像显示实用程序窗口(即imagemagick、eog等) 我尝试了以下解决方法:以下Python代码(display_image.py)启动了tycat/terminology image display实用程序,该实用程序成功地在控制台终端中显示了一个图像: import os os.system("tycat -g 100x100 /home/user/Dekstop/image.png")
import os
os.system("tycat -g 100x100 /home/user/Dekstop/image.png")
所以当我执行Python代码片段时,一切都很好。但是,当我从Java处理调用时,如下所示:
Process proc = Runtime.getRuntime().exec(new String[]{"python","/home/user/Desktop/display_image.py"});
BufferedReader stdInput = new BufferedReader(new InputStreamReader(proc.getInputStream()));
BufferedReader stdError = new BufferedReader(new InputStreamReader(proc.getErrorStream()));
// read the output from the command
System.out.println("Here is the standard output of the command:\n");
String s = null;
while ((s = stdInput.readLine()) != null) {
System.out.println(s);
}
System.out.println("Here is the standard error of the command (if any):\n");
String s1 = null;
while ((s1 = stdError.readLine()) != null) {
System.out.println(s1);
}
这个过程似乎被挂起了,没有显示任何东西。注意,我从术语中运行java类,仍然是相同的问题
如果有任何提示或帮助可以解决这个问题,或者帮助我在终端控制台应用程序中显示Java类中的任何图像文件,我将不胜感激
谢谢
tycat
是否在文档中的任何地方提到需要使用实时终端?是否需要您未提供的输入?快速浏览一下I-seescanf
,它可以从stdin读取。您是否在任何地方提供该输入?应该从术语环境内部调用tycat。它可以采用以下格式的任何图像文件作为输入:$tycat I useimport subprocess
,然后构建一个命令字符串,如command='tycat-g 20x100 image.png'
,最后使用subprocess.Popen(command.split())
或subprocess.检查输出(command.split())
。tycat
是否在文档中的任何地方提到需要使用带电终端?是否需要您未提供的输入?快速浏览一下I-seescanf
,它可以从stdin读取。您是否在任何地方提供该输入?应该从术语环境内部调用tycat。它可以采用以下格式的任何图像文件作为输入:$tycat I useimport subprocess
,然后构建一个命令字符串,如command='tycat-g 20x100 image.png'
,最后使用subprocess.Popen(command.split())
或subprocess调用它。检查输出(command.split())
。