Cake PHP で GD lib を使用してサムネイル写真を作成しようとしています。
サイズ変更されたサムネイルを tmp ディレクトリに書き込み、適切な URL を作成して tmp ディレクトリから画像を表示できます。
//set up empty GD resource
$tmp = imagecreatetruecolor(200*$iw/$ih, 200);
//create thumbnail image in the empty GD resource
imagecopyresampled($tmp, $src, 0, 0, 0, 0,200*$iw/$ih, 200, $iw, $ih);
//build full path to thumbnail in the cakephp tmp directory
$thumbfile = APP.'tmp/thumb.jpg';
//build URL path to the same thumbnail
$thumblink = $this->webroot.'tmp/thumb.jpg';
//write jpeg to the tmp directory
$return=imagejpeg($tmp,$thumbfile);
//write out the image to client browser
echo "<img=\"$thumblink\" alt=\"thumb\" height=\"200\" width=\"200*$iw/$ih\">";
サムネイルが作成され、tmp ディレクトリに書き込まれますが、URL にアクセスしようとすると、次のエラー メッセージが表示されます。
Error: TmpController could not be found.
Error: Create the class TmpController below in file: app/Controller/TmpController.php
明らかに、ルーティング エラーがあります。Cake は、tmp ディレクトリを調べる代わりに、tmp コントローラを呼び出そうとします。これを修正するにはどうすればよいですか、または GD lib を使用して一時的なサムネイルを提供する別の方法はありますか? セッションまたはユーザーごとに固有のサムネイルを作成する予定ですが、まずこれを機能させる必要があります。
Config/routes.php でのルーティング:
Router::connect('/', array('controller' => 'MsCake', 'action' => 'index'));
Router::connect('/pages/*', array('controller' => 'pages'));
CakePlugin::routes();
ThumbnailHelper を見ましたが、それは GD Lib を使用していません。また、外部から apache でアクセスできないディレクトリに保存されているファイルにアクセスできるようにする必要がありますが、それらにアクセスするための一時的なシンボリック リンクにアクセスすることさえできません。例えば。
- 問題のファイルを指す一時的なシンボリック リンクを tmp ディレクトリに作成します。
- 上記のように、$this->webroot.'tmp/link-to-myfile' を使用して、シンボリック リンクを指す HTML リンクを作成します。
...そして、上記と同じエラーが発生します - エラー: TmpController が見つかりませんでした。