
解決
1. gd2 ライブラリを開き、phpinfo を通じて表示します。 BOM をクリアしてください。コードは先頭行から書かれているため、コードに問題が発生する可能性があります。
2. ヘッダーの前に ob_clean() ステートメントを追加して実行します。
注記
画像を生成する場合、header('Content-type: image/png'); を前に出力することはできません。または、 ob_clean(); を追加します。出力を使用する場合でも、この文を使用して出力キャッシュをクリアできます。
例題を解く
// 検証コードの高さと幅を設定上記の文字数
$img_w = 70;
$img_h = 22;
$font = 5;
$char_len = 5;
// 配列を結合すると、 range() 関数は範囲配列を返します。
$char = array_merge ( range ( 'a', 'z' ), range ( 'A', 'Z' ), range ( '1', '9' ) );
$rand_keys = array_rand ( $char, $char_len ); // 配列から指定された数の要素をランダムに取得してキー値を生成します。
if ($char_len == 1) { //数値が 1 つだけの場合、array_rand() は非配列型を返します
$rand_keys = 配列 ($rand_keys );
}
shuffle($rand_keys); //使用する必要はありません。
$コード = '';
foreach ( $rand_keys として $k ) {
$code .= $char [$k];
}
セッション開始();
$_SESSION ['キャプチャ'] = $code;
//線と色を追加
// 新しい画像を作成する
$img = imagecreatetruecolor ( $img_w, $img_h );
// 色の割り当て
$bg_color = imagecolorallocate ( $img, 0xcc, 0xcc, 0xcc );
//キャンバスの背景色
imagefill ( $img, 0, 0, $bg_color );
//干渉線
for($i = 0; $i < 300; ++$i) {
$color = imagecolorallocate ( $img, mt_rand ( 0, 255 ), mt_rand ( 0, 255 ), mt_rand ( 0, 255 ) );
imagesetpixel ( $img, mt_rand ( 0, $img_w ), mt_rand ( 0, $img_h ), $color );
}
for($i = 0; $i <= 10; ++ $i) {
// 線の色を設定します
$color = imageColorAllocate ( $img, mt_rand ( 0, 255 ), mt_rand ( 0, 255 ), mt_rand ( 0, 255 ) );
// $img 画像上にランダムに直線を描画します
imageline ( $img, mt_rand ( 0, $img_w ), mt_rand ( 0, $img_h ), mt_rand ( 0, $img_w ), mt_rand ( 0, $img_h ), $color );
//imagesetpixel($img,mt_rand(0,$img_w),mt_rand(0,$img_h),$color);
}
//フレームを追加
$rect_color = imagecolorallocate ( $img, 0x90, 0x90, 0x90 );
imagerectangle ( $img, 0, 0, $img_w - 1, $img_h - 1, $rect_color );
$str_color = imagecolorallocate ( $img, mt_rand ( 0, 100 ), mt_rand ( 0, 100 ), mt_rand ( 0, 100 ) );
$font_w = イメージフォント幅 ( $font );
$font_h = 画像フォントの高さ ( $font );
$str_len = $font_w * $char_len;
画像文字列 ( $img, $font, ($img_w - $str_len) / 2, ($img_h - $font_h) / 2, $code, $str_color );以上がphpで画像が生成できない問題の解決策でしたので、皆様のお役に立てれば幸いです。