0

簡単なキャプチャ ジェネレータを作成しましたが、 captcha-image は表示されません。

index.php :

<?php
session_start();
$_SESSION['captcha'] = rand(1000, 9999);
?>

<img src="generator.inc.php" />

generator.inc.php :

<?php
session_start();
header('Content-type: image/jpeg');

$text = $_SESSION['captcha'];

$font_size = 30;
$image_width = 160;
$image_height = 50;

$image = imagecreate($image_width, $image_height);

imagecolorallocate($image, 200, 200, 200);

$font_color = imagecolorallocate($image, 20 , 20 , 20);

imagettftext($image, $font_size, 0, 15, 30, $font_color, 'BYekan.ttf', $text);

imagejpeg($image);
?>

私が間違っていることを教えてください。

PS :

Linux で Lamp サーバーを使用しています。

4

3 に答える 3

1

おそらくGDライブラリがインストールされていません。

また、チェックインしてphp.ini、GD 行のコメントが外されていることを確認してください。

于 2014-07-25T14:40:22.767 に答える
0

スクリプト内の関数呼び出しを削除したところ、変数headerが定義されていないというエラーが見つかりました。スクリプトで、割り当て$image_heightを複製します。$image_width

于 2013-08-04T11:25:51.573 に答える
0

私の提案は、2つのことを試すことです:

header('Content-type: image/jpeg');の直前にコンテンツタイプを配置することを人々が提案することを以前に読んで見ましたimagejpeg($image);。これを裏付けるために、それをプロファイリングする記事があります: http://php.net/manual/en/function.imagejpeg.php

私の他の提案は、ファイルを base64_encode することです。「実際の出力を送信する前に header() を呼び出す必要があるheader('Content-type: image/jpeg');」というエラーの提案が生成される場合、base64_encode を使用すると、コンテンツ タイプを指定して画像を作成できます。ヘッダー コードを削除し、が呼び出されたときに次のコードを追加します。imagejpeg($image);

ob_start();
imagejpeg($image); //your code
$img = ob_get_contents();
ob_end_clean();
echo '<img src="data:image/jpeg;base64,'.base64_encode($img).'" />';
于 2013-08-04T11:37:11.353 に答える