我使用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文件夹中的文件?
答案 0 :(得分:0)
图片路径是相对于包含代码的文件。如果您的脚本位于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);
答案 1 :(得分:0)
@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">
此解决方案适合我。