如何在cakephp中使用GD库

如何在cakephp中使用GD库,php,cakephp,gd,Php,Cakephp,Gd,我想在cake php中使用GD库,但我遇到了一些问题。 以下是我的看法.ctp: <?php header("Content-type: image/png"); $img = @ImageCreate(200, 100); $color = ImageColorAllocate($img, 255, 0, 0); ImagePng($img); ?> 我的GD库可以很好地安装在我的服务器上(它出现在phpinfo()中) 知道为什么吗?您不应该在view.ctp文件中使用hea

我想在cake php中使用GD库,但我遇到了一些问题。 以下是我的看法.ctp:

<?php
header("Content-type: image/png");
$img = @ImageCreate(200, 100);
$color = ImageColorAllocate($img, 255, 0, 0);
ImagePng($img);
?>
我的GD库可以很好地安装在我的服务器上(它出现在phpinfo()中)


知道为什么吗?

您不应该在
view.ctp
文件中使用
header()
函数。 将所有标题发送到浏览器后,将呈现视图

实现这一点的最佳(实际上也是唯一)方法是设置所有标题参数 从你的控制器。
检查并查看如何设置不同的标题。

您不应该在
view.ctp
文件中使用
header()
函数。 将所有标题发送到浏览器后,将呈现视图

实现这一点的最佳(实际上也是唯一)方法是设置所有标题参数 从你的控制器。
检查并同时查看如何设置不同的标题。

您需要创建一个新的来渲染这样的图像

例如,创建一个新布局为“app/View/Layouts/image.ctp”,包含以下内容

<?php 
header('Content-Type: image/png');
echo $this->fetch('content'); 
die();

现在应该为图像设置正确的标题

您需要创建一个新的来渲染这样的图像

例如,创建一个新布局为“app/View/Layouts/image.ctp”,包含以下内容

<?php 
header('Content-Type: image/png');
echo $this->fetch('content'); 
die();

现在应该为图像设置正确的标题

此处未正确设置您的
内容类型。我从未使用过CakePHP,但您可能需要使用它们的函数来更改标题,而不是
标题
函数。这不是GD库的问题。标题在正确的时间发送会出现问题,因此浏览器会将内容理解为png图像。请查看错误日志,查看常见的“标题已发送”警告。由于先前的输出,您的header()调用很可能未成功。此处未正确设置您的
内容类型。我从未使用过CakePHP,但您可能需要使用它们的函数来更改标题,而不是
标题
函数。这不是GD库的问题。标题在正确的时间发送会出现问题,因此浏览器会将内容理解为png图像。请查看错误日志,查看常见的“标题已发送”警告。由于之前的输出,您的header()调用很可能没有成功。您好,我只是尝试实现您所说的,但存在一些问题,第一个问题是我想保留“view.ctp”的模板,如果我“加载”image.ctp布局,它将完全替换我的视图布局。第二个问题是不起作用,我只是得到了png的“缩略图”。你知道为什么吗?我对你在这里想要达到的目标感到困惑。如果您想使用GD库渲染图像,那么这应该是一个单独的视图,我无法想象您如何能够看到图像中的其他数据。换句话说,图像不同于标准HTML页面。如果要生成图像,请使用我建议的单独布局方法。如果你想将生成的图像嵌入到你的标准布局中,那么你可以用嵌入图像的相同方式嵌入它。好的,我将尝试更精确地说明我想要做什么。实际上,我想显示一个图像,它将从我从数据库中选择的数据生成,一种条形图,但我想使用GD。所以它会有我的视图模板,在页面的某个地方,我以前用数据生成的图像。这是否更清楚/我认为你需要两种观点/行动。(i) /view/id创建实际页面&(ii)/createimage/id创建图像。第一个视图(页面)将包括第二个视图(图像)。您好,我刚刚尝试实现您所说的,但存在一些问题,第一个问题是我想保留我的'view.ctp'模板,如果我“加载”image.ctp布局,它将完全取代我的视图布局。第二个问题是不起作用,我只是得到了png的“缩略图”。你知道为什么吗?我对你在这里想要达到的目标感到困惑。如果您想使用GD库渲染图像,那么这应该是一个单独的视图,我无法想象您如何能够看到图像中的其他数据。换句话说,图像不同于标准HTML页面。如果要生成图像,请使用我建议的单独布局方法。如果你想将生成的图像嵌入到你的标准布局中,那么你可以用嵌入图像的相同方式嵌入它。好的,我将尝试更精确地说明我想要做什么。实际上,我想显示一个图像,它将从我从数据库中选择的数据生成,一种条形图,但我想使用GD。所以它会有我的视图模板,在页面的某个地方,我以前用数据生成的图像。这是否更清楚/我认为你需要两种观点/行动。(i) /view/id创建实际页面&(ii)/createimage/id创建图像。第一个视图(页面)将包括第二个视图(图像)。
$this->layout = 'image';