2017-02-09 117 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"> 

該解決方案爲我工作。

相關問題