Cakephp 3:从同一文件夹中包含的另一个文件读取img文件夹中的文件



我正在使用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">

这个解决方案对我有用。

最新更新