สารละลาย
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 ไม่สามารถสร้างภาพได้ ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน