Cakephp 3:从包含在同一文件夹中的另一个文件读取img文件夹中的文件
问题描述:
我使用gd库创建图像。
该脚本创建图像对象,然后打开logo.png
图像并将其粘贴到$image
。Cakephp 3:从包含在同一文件夹中的另一个文件读取img文件夹中的文件
$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">
该解决方案为我工作。
我试过相对路径,但它不起作用。我会尝试将其移动到控制器 – LuTo