解決
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で画像が生成できない問題の解決策でしたので、皆様のお役に立てれば幸いです。