Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 如何使用Perl将图形添加到网页?_Html_Mysql_Perl_Graph_Charts - Fatal编程技术网

Html 如何使用Perl将图形添加到网页?

Html 如何使用Perl将图形添加到网页?,html,mysql,perl,graph,charts,Html,Mysql,Perl,Graph,Charts,我需要使用从MySQL数据库中提取的Perl数据创建一个图形 我已经看到了GD::Graph推荐和其他方法,但我不知道如何使用它们,也不能在网上找到太多 我已经为网页输入了一个GD::Graph脚本,但什么也没有出现。我假设我必须以某种方式合并HTML来显示图形,但我也不知道如何做到这一点 我只需要一个基本的线图,所以任何简单的例子都会有很大帮助 下面是我玩的一个无法工作的示例程序: use GD::Graph::bars; use GD::Graph::Data; my $data = GD

我需要使用从MySQL数据库中提取的Perl数据创建一个图形

我已经看到了
GD::Graph
推荐和其他方法,但我不知道如何使用它们,也不能在网上找到太多

我已经为网页输入了一个
GD::Graph
脚本,但什么也没有出现。我假设我必须以某种方式合并HTML来显示图形,但我也不知道如何做到这一点

我只需要一个基本的线图,所以任何简单的例子都会有很大帮助

下面是我玩的一个无法工作的示例程序:

use GD::Graph::bars;
use GD::Graph::Data;

my $data = GD::Graph::Data->new([
    ["1st","2nd","3rd","4th","5th","6th","7th", "8th", "9th"],
    [    1,    2,    5,    6,    3,  1.5,    1,     3,     4],
]) or die GD::Graph::Data->error;

my $graph = GD::Graph::bars->new;

$graph->set( 
     x_label         => 'X Label',
     y_label         => 'Y label',
     title           => 'A Simple Bar Chart',

     #y_max_value     => 7,
     #y_tick_number   => 8,
     #y_label_skip    => 3,

     #x_labels_vertical => 1,

     #bar_spacing     => 10,
     #shadow_depth    => 4,
     #shadowclr       => 'dred',

     #transparent     => 0,
) or die $graph->error;

$graph->plot($data) or die $graph->error;

my $file = 'bars.png';
open(my $out, '>', $file) or die "Cannot open '$file' for write: $!";
binmode $out;
print $out $graph->gd->png;
close $out;

如果您对
GD::Graph
有足够的了解,可以生成一个图像文件(比如PNG文件),那么在web浏览器中显示它的常用习惯用法是

...
use GD::Graph;
my $graph = ...;
my $file = "bars-$$.png";     # a unique file name
# replace  /var/www/htdocs  here with the root document directory for your server
open my $out, '>', '/var/www/htdocs/bars/$file';
print $out $graph->gd->png;
close $out;

# now write the web page
print "Content-type: text/html\n\n";
print "<html><head><title>Bar Graph</title><head>\n";
print "<body>";
print ...
print "<h2>Here is a bar graph</h2>\n";
print "<img src='/bars/$file'>\n";
print ...
print "</body></html>\n";
。。。
使用GD::Graph;
我的$graph=。。。;
my$file=“bar-$.png”#唯一的文件名
#将此处的/var/www/htdocs替换为服务器的根文档目录
打开我的$out“>”,“/var/www/htdocs/bar/$file”;
打印$out$graph->gd->png;
收尾美元;
#现在编写网页
打印“内容类型:text/html\n\n”;
打印“条形图\n”;
打印“”;
打印
打印“这是一个条形图\n”;
打印“\n”;
打印
打印“\n”;

您的示例程序适合我。我得到一个名为
bar.png
的文件,其中包含预期的图像。如果你需要帮助让程序运行,那么你需要给我们更多的信息,而不是“这里有一个我玩的示例程序,我无法运行”。你到底有什么意想不到的行为?文件写了吗?它包含正确的图像吗?你的电脑起火了吗

让这个程序工作后,将其转换为CGI程序并将图像写入标准输出是一个简单的过程。它看起来像这样:

#!/usr/bin/perl

use strict;
use warnings;

# Added: Use the CGI library
# (not essential, but makes your life easier)
use CGI 'header';
use GD::Graph::bars;
use GD::Graph::Data;

my $data = GD::Graph::Data->new([
    ["1st","2nd","3rd","4th","5th","6th","7th", "8th", "9th"],
    [    1,    2,    5,    6,    3,  1.5,    1,     3,     4],
]) or die GD::Graph::Data->error;

my $graph = GD::Graph::bars->new;

$graph->set(
     x_label         => 'X Label',
     y_label         => 'Y label',
     title           => 'A Simple Bar Chart',

     #y_max_value     => 7,
     #y_tick_number   => 8,
     #y_label_skip    => 3,

     #x_labels_vertical => 1,

     #bar_spacing     => 10,
     #shadow_depth    => 4,
     #shadowclr       => 'dred',

     #transparent     => 0,
) or die $graph->error;

$graph->plot($data) or die $graph->error;

# Added: print the content-type header
print header('image/png');

# Removed: opening an image file
# Changed: Run binmode against STDOUT, not your image file
binmode STDOUT;
# Changed: Print image to STDOUT, not your image file
print $graph->gd->png;
# Removed: Don't close the filehandle, that you didn't open :-)
如果您将该代码放在web服务器上某个文件中,该文件被识别为CGI程序(这样做不在本答案的范围内,但在本网站上有很多关于它的好答案),那么您将能够在浏览器中输入该文件的URL以查看图像。一旦成功,您还可以使用
标记将图像嵌入HTML页面


如果您在这方面需要更多帮助,请提出更具体的问题。

因此,这不是代码编写服务。请向我们展示您尝试过并需要帮助的代码。我不是要求别人为我编写代码,只是帮助我指出正确的方向。您展示的代码片段创建了一个图像,并将其打印到文件中。如果您想在HTML页面中包含该图像,则必须包含该图像。或者,您可以将此代码用作CGI脚本,而不是打开文件,只需打印到标准输出即可。首先发送正确的
图像/png
标题。在HTML中的
标记中使用脚本的URL。即使我保持原样,但仍然无法获得图像。我该如何整合你提到的新增内容?你首先需要了解“网络”是如何工作的:服务器、客户端、请求和响应;内容类型、HTML、图像在页面中的嵌入方式等。如果没有基础知识,您将迷失方向。您在这里学到的还不够。为什么这比用
image/png
内容类型和图像数据进行响应更惯用?您需要
binmode$out
打开我的$out,'>:unix',…
确保鼓励在CGI程序中使用原始HTML从来都不是一个好主意。这非常有帮助,我得到了我想要的结果。Thanks@Nicolas: