
สารละลาย
1. เปิดไลบรารี gd2 และดูผ่าน phpinfo ล้าง BOM รหัสถูกเขียนโดยเริ่มจากบรรทัดบนสุด ดังนั้นปัญหาอาจเกิดขึ้นในรหัส
2. เพิ่มคำสั่ง ob_clean() ก่อนส่วนหัวแล้วรัน
บันทึก
เมื่อสร้างรูปภาพ header('Content-type: image/png'); หรือเพิ่ม: ob_clean(); แม้ว่าคุณจะใช้เอาต์พุต คุณสามารถใช้ประโยคนี้เพื่อล้างแคชเอาต์พุตได้
แก้ตัวอย่าง
//ตั้งค่าความสูงและความกว้างของรหัสยืนยันnจำนวนอักขระด้านบน
$img_w = 70;
$img_h = 22;
$แบบอักษร = 5;
$char_len = 5;
//การรวมอาร์เรย์เข้าด้วยกัน ฟังก์ชัน range() จะส่งคืนอาร์เรย์ช่วง
$char = array_merge ( ช่วง ( 'a', 'z' ), ช่วง ( 'A', 'Z' ), ช่วง ( '1', '9' ) );
$rand_keys = array_rand ( $char, $char_len ); // สุ่มนำองค์ประกอบตามจำนวนที่ระบุจากอาร์เรย์เพื่อสร้างค่าคีย์
if ($char_len == 1) { //ถ้ามีเพียงตัวเลขเดียว array_rand() จะส่งคืนประเภทที่ไม่ใช่อาร์เรย์
$rand_keys = อาร์เรย์ ($rand_keys );
-
shuffle($rand_keys); //ไม่จำเป็นต้องใช้
$รหัส = '';
foreach ( $rand_keys เป็น $k ) {
$รหัส .= $ถ่าน [$k];
-
session_start ();
$_SESSION ['แคปช่า'] = $โค้ด;
//เพิ่มเส้นและสี
//สร้างภาพใหม่
$img = imagecreatetruecolor ( $img_w, $img_h );
//กำหนดสี
$bg_color = imagecolorallocate ( $img, 0xcc, 0xcc, 0xcc );
//สีพื้นหลังแคนวาส
เติมรูปภาพ ( $img, 0, 0, $bg_color );
//สายรบกวน
สำหรับ($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 ), $สี );
-
สำหรับ($i = 0; $i <= 10; ++ $i) {
//กำหนดสีของเส้น
$color = imageColorAllocate ( $img, mt_rand ( 0, 255 ), mt_rand ( 0, 255 ), mt_rand ( 0, 255 ) );
//วาดเส้นตรงแบบสุ่มบนรูปภาพ $img
อิมเมจไลน์ ( $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 );
สี่เหลี่ยมผืนผ้ารูปภาพ ( $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 ไม่สามารถสร้างภาพได้ ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน