圖片出現破裂 怎么回事 代碼是跟著敲的


image.func.php 代碼
<?php?
require_once 'string.func.php';
//創建畫布
? ? $width = 80;
$height = 28;
$image = imagecreatetruecolor ( $width, $height );
$white = imagecolorallocate ( $image, 255, 255, 255 );
$black = imagecolorallocate ( $image, 0, 0, 0 );
//用填充矩形填充畫布
imagefilledrectangle ( $image, 1, 1, $width - 2, $height - 2, $white );
$type=1;
$length=4;
$chars = buildRandomString ( $type, $length );
$sess_name="verift";
$_SESSION [$sess_name] = $chars;
$fontfiles = array ("MSYH.TTC", "MSYHL.TTC", "SIMHEI.TTF", "SIMKAI.TTF", "SIMSUN.TTC", );
for($i = 9; $i < $length; $i ++) {
$size = mt_rand ( 14, 18 );
$angle = mt_rand ( - 15, 15 );
$x = 5 + $i * $size;
$y = mt_rand ( 20, 26 );
$fontfile = "../fonts/" . $fontfiles [mt_rand ( 0, count ( $fontfiles ) - 1 )];
$color = imagecolorallocate ( $image, mt_rand ( 50, 90 ), mt_rand ( 80, 200 ), mt_rand ( 90, 180 ) );
$text = substr ( $chars, $i, 1 );
imagettftext ( $image, $size, $angle, $x, $y, $color, $fontfile, $text );
}
header ( "content-type:image/gif" );
imagegif ( $image );
imagedestroy ( $image );
string.func.php ?代碼
<?php
function buildRandomString($type = 1, $length = 4){
? ? if ($type == 1) {
? ? ? ? $chars = join("", range(0, 9));
? ? } elseif ($type == 2) {
? ? ? ? $chars = join("", array_merge(range("a", "z"), range("A", "Z")));
? ? } elseif ($type == 3) {
? ? ? ? $chars = join("", array_merge(range("a", "z"), range("A", "Z"), range(0, 9)));
? ? }
? ? if ($length > strlen($chars)) {
? ? ? ? exit("長度不夠");
? ? }
? ? $chars = str_shuffle($chars);
? ? return substr($chars, 0, $length);
}
2016-06-24
不明白你的說的破裂是什么意思,你是指你在前端的img標簽那里輸出的圖片是破裂的嗎?如果是這樣的話,一你沒有封裝函數,二你沒有調用它,你可以試一下我這個
<?php /***?驗證碼?***/ require_once'string.func.php'; //通過GD庫做驗證碼 function?verifyImage($type=1,?$length=4,?$pixel=50,?$line=0,?$sess_name="verify"){ ???? ????//1.?創建畫布 ????$width?=?80; ????$height?=?28; ????$type?=?1; ????$length?=?4; ????$image?=?imagecreatetruecolor($width,?$height); ????$white?=?imagecolorallocate($image,255,255,255); ????$black?=?imagecolorallocate($image,0,0,0); ????//2.?用填充矩形填充畫布 ????imagefilledrectangle($image,?1,?1,?$width-2,?$height-2,?$white); ????//3.?獲取隨機驗證碼 ????$chars?=?buildRandomString($type,?$length); ????//4.?保存到session ????$sess_name?=?"verify"; ????$_SESSION[$sess_name]?=?$chars; ????$fontfiles?=?array( ????????????????????"CONSTANI.TTF", ????????????????????"simfang.ttf", ????????????????????"simhei.ttf", ????????????????????"simkai.ttf", ????????????????????"simsun.ttc", ????????????????????"FZLTCXHJW.TTF",???????????????? ????????????????); ????//5.?生成驗證碼 ????for($i=0;?$i<$length;?$i++){ ????????$size?=?mt_rand(14,18);//?字體大小變化 ????????$angle?=?mt_rand(-15,15);//?傾斜角度變化 ????????$x?=?5?+?$i?*?$size;//?位置變化 ????????$y?=?mt_rand(20,26); ????????//?隨機字體 ????????$fontfile?=?"../fonts/".$fontfiles[mt_rand(0,count($fontfiles)-1)]; ????????//?隨機字體顏色 ????????$color?=?imagecolorallocate($image,?mt_rand(10,90),?mt_rand(20,180),?mt_rand(30,130)); ????????$text?=?substr($chars,?$i,?1);//?每次取一個字符 ????????imagettftext($image,?$size,?$angle,?$x,?$y,?$color,?$fontfile,?$text); ????} ????//6.?干擾點 ????if($pixel){ ????????for($i=0;?$i<$pixel;?$i++){ ????????????imagesetpixel($image,?mt_rand(0,$width-1),?mt_rand(0,$height-1),?$black); ????????} ????} ????//7.?干擾線 ????if($line){ ????????for($i=0;?$i<$line;?$i++){ ????????????$color?=?imagecolorallocate($image,?mt_rand(0,255),?mt_rand(0,255),?mt_rand(0,255)); ????????????imageline($image,?mt_rand(0,$width-1),?mt_rand(0,$height-1),?mt_rand(0,$width-1),?mt_rand(0,$height-1),?$color); ????????} ????} ????ob_clean(); ????//8.?輸出到服務端 ????header("content-type:image/gif");//?輸出圖片類型 ????imagegif($image); ????imagedestroy($Aimage);//?銷毀圖片內存 ???? } //verifyImage();2016-06-24
我試試 ? 謝啦