PHP输出到IMG标签



我有此脚本将图像输出到命令行,如果我将其重定向到file.png。我看不到它。

我也试图将脚本分为两个部分,但不起作用。

1->生成图形2->调用该脚本的第一个脚本并将全部保存在变量中。

脚本:

<?php
header("Content-Type: image/png");
header("Content-Transfer-Encoding: binary");
ob_flush();
require_once ('/opt/rMON/config.php');
//if(isset($_GET['id'])){
//  $id = trim($_GET['id']);
//} else {
//  die("El id?");
//}
//DEBUG ID
$id=1;
$result = ***MYSQL QUERY***
$ip         = long2ip($result['ip']);
$interface  = $result['interface'];
$counter    = $result['counter'];
$unix_name  = $result['unix_name'];
$community  = $result['community'];
$version    = $result['version'];
$port       = $result['port'];
$rrd_file   = __RRD_ROOT__.$unix_name.".rrd";
$graph_name = $result['name'];
$host_ip    = long2ip($result['ip']);
$iface_name = $result['iface_name'];
$fecha      = date("y-m-d h:i:s");
$start = "3600";
$tiempo = "1 Hora";
create_graph($start, $graph_name, $fecha, $rrd_file, $input, $output, $host_ip, $iface_name, $tiempo);
function create_graph($start, $graph_name, $fecha, $rrd_file, $input, $output, $host_ip, $iface_name, $tiempo){
    $opts = array (
        "--imgformat=PNG",
        "--slope-mode",
        "--title=$graph_name ($host_ip) - $iface_name - $tiempo",
        "--rigid",
        "--base=1000",
        "--height=120",
        "--width=500",
        "--alt-autoscale-max",
        "--lower-limit=0",
        "--font=TITLE:10:",
        "--font=AXIS:8:",
        "--font=LEGEND:8:",
        "--font=UNIT:8:30:",
        "--watermark=$fecha - Radu Radu",
        "--start=-$start",
        "--end=now",
        "DEF:a=$rrd_file:$input:AVERAGE",
        "DEF:b=$rrd_file:$output:AVERAGE",
        "CDEF:cdefa=a,8,*",
        "CDEF:cdefe=b,8,*",
        "AREA:cdefa#00CF00FF:Entrantet",
        "GPRINT:cdefa:LAST:Actual:%8.2lf %s",
        "GPRINT:cdefa:AVERAGE:Promedio:%8.2lf %s",
        "GPRINT:cdefa:MAX:Máximo:%8.2lf %s",
        "LINE1:cdefe#002A97FF:Salientet",
        "GPRINT:cdefe:LAST:Actual:%8.2lf %s",
        "GPRINT:cdefe:AVERAGE:Promedio:%8.2lf %s",
        "GPRINT:cdefe:MAX:Máximo:%8.2lf %s"
    );
    $ret = rrd_graph("-", $opts);
    if(!$ret){
        echo "ERROR en el objeto: $graph_name ".rrd_error()."n";
    }
}
?>

我尝试输出到php://也没有运气。

正如我在日志中看到的那样,输出将转到Apache Server日志。

"dic 21 10:58:00 xxx.xxx.com httpd[27941]: [305B blob data]"

谢谢!

您做错了。rrd_graph不接受$filename-,它将返回一个带有有关生成图像的信息的数组;它不会输出或冲洗任何图像数据。- $filename参数适用于RRDGraph类。为了拥有图像数据,您需要打开由rrd_graph生成的文件,读取数据并输出数据,或使用RRDGraph返回的数组['image']键以获取二进制图像数据。

使用rrd_graph功能

function create_graph($start, $graph_name, $fecha, $rrd_file, $input, $output, $host_ip, $iface_name, $tiempo) {
    $opts = array (
        "--imgformat=PNG",
        "--slope-mode",
        "--title=$graph_name ($host_ip) - $iface_name - $tiempo",
        "--rigid",
        "--base=1000",
        "--height=120",
        "--width=500",
        "--alt-autoscale-max",
        "--lower-limit=0",
        "--font=TITLE:10:",
        "--font=AXIS:8:",
        "--font=LEGEND:8:",
        "--font=UNIT:8:30:",
        "--watermark=$fecha - Radu Radu",
        "--start=-$start",
        "--end=now",
        "DEF:a=$rrd_file:$input:AVERAGE",
        "DEF:b=$rrd_file:$output:AVERAGE",
        "CDEF:cdefa=a,8,*",
        "CDEF:cdefe=b,8,*",
        "AREA:cdefa#00CF00FF:Entrantet",
        "GPRINT:cdefa:LAST:Actual:%8.2lf %s",
        "GPRINT:cdefa:AVERAGE:Promedio:%8.2lf %s",
        "GPRINT:cdefa:MAX:Máximo:%8.2lf %s",
        "LINE1:cdefe#002A97FF:Salientet",
        "GPRINT:cdefe:LAST:Actual:%8.2lf %s",
        "GPRINT:cdefe:AVERAGE:Promedio:%8.2lf %s",
        "GPRINT:cdefe:MAX:Máximo:%8.2lf %s"
    );
    $fileName = "rrd.png";
    $ret = rrd_graph($fileName, $opts);
    if(!$ret){
        echo "ERROR en el objeto: $graph_name ".rrd_error()."n";
    }
    else {
        header("Content-Type: image/png");
        header("Content-Length: " . filesize($fileName));
        $fp = fopen($fileName, 'rb');
        if($fp) {
            fpassthru($fp);
            fclose($fp);
            exit();
        }
    }
}

使用RRDGraph

function create_graph($start, $graph_name, $fecha, $rrd_file, $input, $output, $host_ip, $iface_name, $tiempo){
    $opts = array (
        "--imgformat=PNG",
        "--slope-mode",
        "--title=$graph_name ($host_ip) - $iface_name - $tiempo",
        "--rigid",
        "--base=1000",
        "--height=120",
        "--width=500",
        "--alt-autoscale-max",
        "--lower-limit=0",
        "--font=TITLE:10:",
        "--font=AXIS:8:",
        "--font=LEGEND:8:",
        "--font=UNIT:8:30:",
        "--watermark=$fecha - Radu Radu",
        "--start=-$start",
        "--end=now",
        "DEF:a=$rrd_file:$input:AVERAGE",
        "DEF:b=$rrd_file:$output:AVERAGE",
        "CDEF:cdefa=a,8,*",
        "CDEF:cdefe=b,8,*",
        "AREA:cdefa#00CF00FF:Entrantet",
        "GPRINT:cdefa:LAST:Actual:%8.2lf %s",
        "GPRINT:cdefa:AVERAGE:Promedio:%8.2lf %s",
        "GPRINT:cdefa:MAX:Máximo:%8.2lf %s",
        "LINE1:cdefe#002A97FF:Salientet",
        "GPRINT:cdefe:LAST:Actual:%8.2lf %s",
        "GPRINT:cdefe:AVERAGE:Promedio:%8.2lf %s",
        "GPRINT:cdefe:MAX:Máximo:%8.2lf %s"
    );
    $graphObj = new RRDGraph('-');
    $graphObj->setOptions($opts);
    $ret = $graphObj->saveVerbose();
    if(!$ret){
        echo "ERROR en el objeto: $graph_name ".rrd_error()."n";
    }
    else {
        header("Content-type: image/png");
        echo $res['image'];
        exit();
    }
}

您可以在此处阅读问题和答案,以解决与您类似的问题。

相关内容

  • 没有找到相关文章

最新更新