0

Cake php で GD ライブラリを使用したかったのですが、問題が発生しています。これが私のview.ctpです:

<?php
header("Content-type: image/png");
$img = @ImageCreate(200, 100);
$color = ImageColorAllocate($img, 255, 0, 0);
ImagePng($img);
?>

しかし、自分のページを見ようとすると、次のようになります。

�PNG IHDR�d�H�HPLTE��   7IDATH����à�S�U�(~;IEND�B`�

GD ライブラリはサーバーに適切にインストールされています (phpinfo() に表示されます)。

理由はありますか?

4

2 に答える 2

2

このような画像をレンダリングするには、新しいビュー レイアウトを作成する必要があります。

たとえば、次の内容で「app/View/Layouts/image.ctp」として新しいレイアウトを作成します

<?php 
header('Content-Type: image/png');
echo $this->fetch('content'); 
die();

次に、コントローラーのビューアクションに追加します

$this->layout = 'image';

これで、画像の正しいヘッダーが設定されるはずです。

于 2013-01-29T17:29:24.687 に答える
1

ファイルheader()内から関数を使用しないでください。view.ctpビューは、すべてのヘッダーがブラウザーに送信された後にレンダリングされます。

これを行う最良の (そして実際には唯一の) 方法は、コントローラーからすべてのヘッダー パラメーターを設定することです。さまざまなヘッダーの設定方法については、ヘッダーの設定とCakeResponseを確認してください。

于 2013-01-29T17:28:04.363 に答える