
Larutan
1. Buka perpustakaan gd2 dan lihat melalui phpinfo. Hapus BOM Kode ditulis mulai dari baris paling atas, sehingga masalah mungkin terjadi pada kode.
2. Tambahkan pernyataan ob_clean() sebelum header lalu jalankan.
Catatan
Saat membuat gambar, header('Content-type: image/png'); tidak boleh memiliki keluaran di depan. Atau, tambahkan: ob_clean(); Bahkan jika Anda menggunakan output, Anda dapat menggunakan kalimat ini untuk menghapus cache output.
Memecahkan contoh
//Atur tinggi dan lebar kode verifikasijumlah karakter di atas
$img_w = 70;
$img_h = 22;
$font = 5;
$char_len = 5;
//Penggabungan array, fungsi range() mengembalikan array rentang
$char = array_merge ( rentang ( 'a', 'z' ), rentang ( 'A', 'Z' ), rentang ( '1', '9' ) );
$rand_keys = array_rand ( $char, $char_len ); // Secara acak mengambil sejumlah elemen tertentu dari array untuk menghasilkan nilai kunci
if ($char_len == 1) { //Jika hanya ada satu angka, array_rand() mengembalikan tipe non-array
$rand_keys = larik ($rand_keys );
}
shuffle($rand_keys); //Tidak perlu digunakan
$kode = '';
foreach ( $rand_keys sebagai $k ) {
$kode .= $char [$k];
}
sesi_mulai();
$_SESSION ['captcha'] = $kode;
//Tambahkan garis dan warna
//Buat gambar baru
$img = imagecreatetruecolor ( $img_w, $img_h );
//menetapkan warna
$bg_color = alokasi warna gambar ( $img, 0xcc, 0xcc, 0xcc );
//Warna latar belakang kanvas
isi gambar( $img, 0, 0, $bg_color );
//jalur interferensi
untuk($i = 0; $i < 300; ++$i) {
$warna = gambarwarnaallokasi ( $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 ), $warna );
}
untuk($i = 0; $i <= 10; ++ $i) {
//Mengatur warna garis
$warna = imageColorAllocation ( $img, mt_rand ( 0, 255 ), mt_rand ( 0, 255 ), mt_rand ( 0, 255 ) );
//Gambarlah garis lurus secara acak pada gambar $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),$warna);
}
//Tambahkan bingkai
$rect_color = alokasi warna gambar ( $img, 0x90, 0x90, 0x90 );
gambarpersegi panjang ( $img, 0, 0, $img_w - 1, $img_h - 1, $rect_color );
$str_color = alokasi warna gambar ( $img, mt_rand ( 0, 100 ), mt_rand ( 0, 100 ), mt_rand ( 0, 100 ) );
$font_w = lebar font gambar ($font );
$font_h = gambarfonteight ($font );
$str_len = $font_w * $char_len;
string gambar ( $img, $font, ($img_w - $str_len) / 2, ($img_h - $font_h) / 2, $code, $str_color );Di atas adalah solusi dari masalah php tidak bisa generate gambar, semoga bermanfaat untuk semuanya.