Solución
1. Abra la biblioteca gd2 y véala a través de phpinfo. Borre la lista de materiales. El código se escribe comenzando desde la línea superior, por lo que el problema puede ocurrir en el código.
2. Agregue la instrucción ob_clean() antes del encabezado y luego ejecútela.
Nota
Al generar imágenes, header('Content-type: image/png'); O agregue: ob_clean(); Incluso si usa salida, puede usar esta oración para borrar el caché de salida.
Resolver ejemplos
//Establece el alto y ancho del código de verificaciónnúmero de caracteres arriba $img_w = 70; $img_h = 22; $fuente = 5; $char_len = 5; // Fusión de matrices, la función range() devuelve una matriz de rango $char = array_merge (rango ('a', 'z'), rango ('A', 'Z'), rango ('1', '9')); $rand_keys = array_rand ($char, $char_len); // Toma aleatoriamente un número específico de elementos de la matriz para generar valores clave. if ($char_len == 1) { //Si solo hay un número, array_rand() devuelve un tipo que no es una matriz $rand_keys = matriz ($rand_keys); } shuffle($rand_keys); //No es necesario utilizarlo $código = ''; foreach ($rand_keys como $k) { $código .= $char [$k]; } inicio_sesión (); $_SESSION ['captcha'] = $código; //Añadir línea y color //Crear nueva imagen $img = imagencreatetruecolor ($img_w, $img_h); //asignar color $bg_color = imagecolorallocate ($img, 0xcc, 0xcc, 0xcc); //Color de fondo del lienzo relleno de imagen ($img, 0, 0, $bg_color); //línea de interferencia para($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); } para($i = 0; $i <= 10; ++ $i) { //Establece el color de la línea $color = imageColorAllocate ( $img, mt_rand ( 0, 255 ), mt_rand ( 0, 255 ), mt_rand ( 0, 255 ) ); //Dibuja una línea recta aleatoriamente en la imagen $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); } //Agregar marco $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 = imagefontwidth ($fuente); $font_h = imagefontheight ($fuente); $str_len = $font_w * $char_len; cadena de imagen ( $img, $fuente, ($img_w - $str_len) / 2, ($img_h - $font_h) / 2, $código, $str_color );
Lo anterior es la solución al problema de que PHP no puede generar imágenes. Espero que sea útil para todos.