ホームページ > php教程 > php手册 > PHP は GIF 動的画像検証コードを生成します

PHP は GIF 動的画像検証コードを生成します

WBOY
リリース: 2016-06-21 08:51:45
オリジナル
813 人が閲覧しました

動的な画像検証コードを実装するために、PHP を使用して GIF アニメーションを生成する方法を考えたことがある人は多いと思います。実装プロセスは次のとおりです。

GIFEncoder クラスを介して ImageCode 関数によって実装された GIF アニメーションの PHP ソース コードを学習できます。

効果は以下のとおりです。

/**

* ImageCode は GIF 画像検証を生成します

* @param $string 文字列

* @param $width width

* @param $height height

**/

関数 ImageCode($string = '', $width = 75, $height = 25)

{

$authstr = $string ? $string : ((time() % 2 == 0) ? mt_rand(1000, 9999) : mt_rand(10000, 99999));

$board_width = $width;

$board_height = $height;

// 32 フレームの GIF アニメーションを生成します

for($i = 0; $i

{

ob_start();

$image = imagecreate($board_width, $board_height);

Imagecolorallocate($image, 0,0,0);

// テキストの色の配列を設定します

$colorList[] = ImageColorAllocate($image, 15,73,210);

$colorList[] = ImageColorAllocate($image, 0,64,0);

$colorList[] = ImageColorAllocate($image, 0,0,64);

$colorList[] = ImageColorAllocate($image, 0,128,128);

$colorList[] = ImageColorAllocate($image, 27,52,47);

$colorList[] = ImageColorAllocate($image, 51,0,102);

$colorList[] = ImageColorAllocate($image, 0,0,145);

$colorList[] = ImageColorAllocate($image, 0,0,113);

$colorList[] = ImageColorAllocate($image, 0,51,51);

$colorList[] = ImageColorAllocate($image, 158,180,35);

$colorList[] = ImageColorAllocate($image, 59,59,59);

$colorList[] = ImageColorAllocate($image, 0,0,0);

$colorList[] = ImageColorAllocate($image, 1,128,180);

$colorList[] = ImageColorAllocate($image, 0,153,51);

$colorList[] = ImageColorAllocate($image, 60,131,1);

$colorList[] = ImageColorAllocate($image, 0,0,0);

$fontcolor = ImageColorAllocate($image, 0,0,0);

$gray = ImageColorAllocate($image, 245,245,245);

$color = imagecolorallocate($image, 255,255,255);

$color2 = imagecolorallocate($image, 255,0,0);

Imagefill($image, 0, 0, $gray);

$space = 15; // 文字間隔

if($i > 0) // 最初のフレームをマスクします

{

for ($k = 0; $k

{

$colorRandom = mt_rand(0,sizeof($colorList)-1);

$float_top = rand(0,4);

$float_left = rand(0,3);

imagestring($image, 6, $space * $k, $top + $float_top, substr($authstr, $k, 1), $colorList[$colorRandom]);

}

}

for ($k = 0; $k

{

$colorRandom = mt_rand(0,sizeof($colorList)-1);

imagesetpixel($image, rand()%70 , rand()%15 , $colorList[$colorRandom]);

}

// 干扰線追加

for($k = 0; $k

{

$colorRandom = mt_rand(0, sizeof($colorList)-1);

// $todrawline = rand(0,1);

$todrawline = 1;

if($todrawline)

{

imageline($image, mt_rand(0, $board_width), mt_rand(0,$board_height), mt_rand(0,$board_width), mt_rand(0,$board_height), $colorList[$colorRandom]);

}

else

{

$w = mt_rand(0,$board_width);

$h = mt_rand(0,$board_width);

imagearc($image, $board_width - Floor($w / 2) , Floor($h / 2), $w, $h, rand(90,180), rand(180,270), $colorList[$colorRandom]) ;

}

}

imagegif($image);

imagedestroy($image);

$imagedata[] = ob_get_contents();

ob_clean();

++$i;

}

$gif = new GIFEncoder($imagedata);

ヘッダー('Content-type:image/gif');

echo $gif->GetAnimation();

}

 

  有关GIFEncoder类、网络中でダウンロード可能~



関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート