我正在使用gd库创建一个图像。
该脚本创建图像对象,然后打开logo.png
图像并将其粘贴到$image
中。
$image = ImageCreate(192,64);
$myFile = imagecreatefrompng('logo.png');
imagecopy($image,$myFile,0,0,0,0,64,64);
ImageDestroy($myFile);
此脚本在另一个应用程序(没有框架(中运行良好,但在 CakePHP 3 中,它不起作用。
脚本和logo.png
图像位于 CakePHP 的webroot/img
文件夹中。
从视图(模板(以这种方式调用脚本:
<img src="/cake/img/kana/makelogo.php">
脚本崩溃,没有错误消息。(Firefox说图像文件无法显示,因为它已损坏。
当行$myFile = imagecreatefrompng('logo.png');
未被注释时,它会崩溃。
是否有特殊的路由设置允许 img 文件夹中的脚本访问 img 文件夹中的文件?
图像路径相对于包含代码的文件。如果您的脚本在weboroot/img/kana
但图像在webroot/img
中的目录中,则无法找到它。
您可以改为指定相对路径:
$myFile = imagecreatefrompng('../logo.png');
仅供参考,如果它曾经移动到 CakePHP 控制器,请使用 config/paths.php
中定义的常量:
$image = ImageCreate(192,64);
$myFile = imagecreatefrompng( WWW_ROOT.'/img/bricks.png');
imagecopy($image,$myFile,0,0,0,0,64,64);
ImageDestroy($myFile);
@ahoffner:如果我在控制器中执行此操作,它可以工作。这是我添加到控制器的代码:
function displaylogo() {
$image = ImageCreate(192,64);
$myFile = imagecreatefrompng(WWW_ROOT.'img/logo.png');
imagecopy($image,$myFile,0,0,0,0,64,64);
ImageDestroy($myFile);
ImagePng ($image);
$this->autoRender = false;
$this->response->header('Content-Type: image/png');
$this->response->type('png');
$this->response->body($image);
}
在观点中:
<img src="/cake/<MyController>/displaylogo">
这个解决方案对我有用。