2017-02-09 138 views
1

我使用gd库创建图像。
该脚本创建图像对象,然后打开logo.png图像并将其粘贴到$imageCakephp 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文件夹中的文件?

回答

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); 
+0

我试过相对路径,但它不起作用。我会尝试将其移动到控制器 – LuTo

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"> 

该解决方案为我工作。

相关问题