1

我有一个 java jar 文件,它在完成后生成一个图像。我需要从 PHP 服务器调用它。如何在网页上显示图像?exec()passthru()不提供返回图像的功能。

4

2 回答 2

1

我看到两种可能性:

  1. 让您的 Java 程序将图像文件写入 Web 服务器可以读取的位置。然后,您必须将图像创建和图像检索步骤分开。
  2. 如果您的 Java 程序可以将图像写入标准输出,那么passthru()应该可以工作。要检查这一点,首先手动调用您的 Java 程序并将输出保存到一个文件并查看该文件,例如通过java your.jar > test.gif. 如果可行,请使用此 PHP 脚本开始:

    <?php
        header('Content-Type: image/gif');
        passthru('java your.jar');
    ?>
    

可能存在一些问题,例如 Web 服务器无法访问 java 可执行文件或 jar 文件。如果是这样,请尝试使用绝对路径。

于 2012-08-05T09:54:51.570 回答
0

如果 Java 返回的图像是有效图像,那么在 PHP 中您只需要使用该header()函数发送一个额外的标头,这样浏览器就知道它是图像而不是常规 HTML。

例如(假设返回的图像是 JPEG 格式):

header('Content-Type: image/jpeg');
readfile('path/to/yourimage.jpg');

http://php.net/manual/en/function.header.php

http://php.net/manual/en/function.readfile.php


exec()另一种方法是使用该函数执行 JAR 文件。应该是这样的:

header('Content-Type: image/jpeg');
exec('java -jar /path/to/file.jar', $output);

http://php.net/manual/en/function.exec.php

于 2012-08-05T09:49:55.257 回答