亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

請各位幫我看看怎么回事,圖片顯示是破裂的

<?php?

require_once 'string.func.php';

//通過GD庫做驗證碼

//創建畫布

session_start();

$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, $black);

$type=1;

$length=4;

$chars=buildRandomString($type,$length);

$sess_name="verify";

$_SESSION[$sess_name]=$chars;

$fontfiles=array('MSYH.TTF');

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)];

$text=substr($chars,$i,1);

// 用 TrueType 字體向圖像寫入文本?

? ? imagettftext($image, $size, $angle, $x, $y, $color, $fontfile, $text);

}

header("content-type:image/gif");

imagegif($image);

imagedestroy($image);





<?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);

}


正在回答

1 回答

我幫你改好了,運行沒問題。

你的問題是:

  1. imagettftext()方法第7個參數$color,是未知的,他需要一個顏色來設置字體顏色,所以在這個這個方法之前先用$color =?imagecolorallocate();生成一個顏色。

  2. 你把這句$fontfile="../fonts".$fontfiles[mt_rand(0,count($fontfiles)-1)];放在循環里面,不建議這么做,雖然沒問題,但如果代碼運算龐大的話會耗費更多資源,建議放到for外面去。這倒不是嚴重問題,組要是下面。

    你的這句:$fontfile="../fonts".$fontfiles[mt_rand(0,count($fontfiles)-1)];中“../fonts”之后沒有加上目錄字符“/”,這樣字符拼接起來的時候會是這樣的"../fontsMSYH.TTF",應該修改成這樣:$fontfile="../fonts/".$fontfiles[mt_rand(0,count($fontfiles)-1)];?

    然后拼接后的字符是這樣才是正確的"../fonts/MSYH.TTF"。

    下面是改好的代碼:

<?php?
require_once?'string.func.php';
//通過GD庫做驗證碼
//創建畫布
session_start();
$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,?$black);
$type=1;
$length=4;
$chars=buildRandomString($type,$length);
$sess_name="verify";
$_SESSION[$sess_name]=$chars;
$fontfiles=array('MSYH.TTF');

//放到for外面,fonts之后要加"/"
//?用?TrueType?字體向圖像寫入文本?
$fontfile="../fonts/".$fontfiles[mt_rand(0,count($fontfiles)-1)];

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);
	$text=substr($chars,$i,1);
	//產生一個用于填充字體的隨機顏色
	$color?=?imagecolorallocate($image,?mt_rand(50,?90),?mt_rand(80,?200),?mt_rand(90,?180));
????
????imagettftext($image,?$size,?$angle,?$x,?$y,?$color,?$fontfile,?$text);
}
header("content-type:image/gif");
imagegif($image);
imagedestroy($image);


0 回復 有任何疑惑可以回復我~
#1

熊貓的家園 提問者

謝謝你,我試試看
2016-11-16 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
手把手教你實現電商網站后臺開發
  • 參與學習       117251    人
  • 解答問題       2101    個

手把手教你用PHP搭建電子商務平臺,由淺入深教你搭建電商系統

進入課程

請各位幫我看看怎么回事,圖片顯示是破裂的

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號