เก็บฟอนต์ไว้ในโฟลเดอร์ เขียนโค้ดเรียกใช้แบบสุ่มอย่างไรครับ
แปะโค๊ดไว้เลยครับ
Date :
2011-01-10 09:14:54
By :
Dragons_first
Code
<?php
$img = imageCreate(130, 50); // サイズ 130x50 pxl
$bg = imageColorAllocate($img, 0, 0, 0); // background color to black
/*
$gray = imageColorAllocate($img, 150, 150, 150); // gray:
$red = imageColorAllocate($img, 255, 0, 0); // red
$green = imageColorAllocate($img, 0, 255, 0); // green
$blue = imageColorAllocate($img, 0, 0, 255); // blue
$purple = imageColorAllocate($img, 150, 0, 200); // purple
$yellow = imageColorAllocate($img, 255, 255, 0); // yellow
*/
$color = imageColorAllocate($img, rand(0,255), rand(0,255), rand(0,255)); (สุ่มค่าสีโหมดRGB)
$width = imagesx($img);
$height = imagesy($img);
// vertical line
$x1 = 0; $y1 = 0;
$x2 = 0; $y2 = $height;
$num_vr_lines = ceil($width/10); // number of vertical lines
for($i = 0; $i < $num_vr_lines; $i++) {
imageLine($img, $x1, $y1, $x2, $y2, $color);
$x1 += 10; $x2 += 10;
}
// herizontal line
$x1 = 0; $y1 = 0;
$x2 = $width; $y2 = 0;
$num_hr_lines = ceil($height/10); // number of herizontal line
for($i = 0; $i < $num_hr_lines; $i++) {
imageLine($img, $x1, $y1, $x2, $y2, $color);
$y1 += 10; $y2 += 10;
}
$font = "tahoma.ttf"; // set font type (อยากใช้ฟอนท์ที่เก็บไว้ในโฟลเดอร์ โดยเลือกมาใช้แบบสุ่ม)
$fontsize = 20; // set font size
$str = md5(crypt("captcha")); // encryption via md5 (จริงๆอยากให้แสดงอักษรภาษาไทย4-6ตัว ถ้าเข้ารหัสจะแสดงเป็นตัวอังกฤษและตัวเลข)
$captcha = strtoupper(substr($str, 0, 4)); // pick up 4 character, then change to appercase
$x = 10; $y = 30; // first character draw point
$deg = array(0, -15, 15, -30, 30, -45, 45, -60, 60, -75, 75); // rotation degree (กำหนดมุมที่ใช้ในการหมุนตัวอักษร)
for($i = 0; $i < strlen($str); $i++) { // draw characters by string length
$d = rand(0, 13); (สุ่มเอาค่ามุมที่เก็บไว้ในอาเรย์มาใช้)
imageTTFText($img, $fontsize, $deg[$d], $x, $y,
$color, $font, $captcha[$i]);
$x += 30; // characters space (ระยะห่างระหว่างตัวอักษร)
}
header("Content-type: image/png");
imagePng($img);
imageDestroy($img);
?>
ตอนนี้ืทำได้แค่นี้แหละครับ ขอคำแนะนำหน่อยครับ
ประวัติการแก้ไข 2011-01-10 16:31:55
Date :
2011-01-10 16:21:43
By :
notton
จะกำหนดสีไว้ใช้ซัก ±ห้าสิบ(สุ่มสีแล้วบางทีเห็นไม่ชัด)
จากนั้นเก็บไว้ในอาเรย์ แล้วค่อยสุ่มออกมาใช้ได้มั้ยครับ
Code
$gray = imageColorAllocate($img, 150, 150, 150);
$red = imageColorAllocate($img, 255, 0, 0);
$green = imageColorAllocate($img, 0, 255, 0);
$blue = imageColorAllocate($img, 0, 0, 255);
$purple = imageColorAllocate($img, 150, 0, 200);
$yellow = imageColorAllocate($img, 255, 255, 0);
.
.
.
(50อัน)
จากนั้นเก็บลงอาเรย์ ต้องเขียนโค้ดยังไงครับ
Date :
2011-01-10 23:03:13
By :
notton
Code (PHP)
<?
$color = array();
//$color['GRAY'] = array(150,150,150); R G B
$color['GRAY'] = array(150,150,150);
$color['RED'] = array(255, 0, 0);
$color['GREEN'] = array(0, 255, 0);
// more color ........
shuffle($color);// shuffle array
$first_color = $color[0]; // get first array
echo "R: ".$first_color[0]."<br />";
echo "G: ".$first_color[1]."<br />";
echo "B: ".$first_color[2]."<br />";
?>
ถูกต้องหรือเปล่า
หวังว่าจะพอเข้าใจนะครับ
พอดีพึ่งหัดเขียนเหมือนกันครับ
Date :
2011-01-10 23:39:21
By :
LindyFralin
Code (PHP)
<?
// for test RGB result Value
echo "R: ".$first_color[0]."<br />";
echo "G: ".$first_color[1]."<br />";
echo "B: ".$first_color[2]."<br />";
?>
apply to function
Code (PHP)
$color = array();
//$color['GRAY'] = array(150,150,150); R G B
$color['GRAY'] = array(150,150,150);
$color['RED'] = array(255, 0, 0);
$color['GREEN'] = array(0, 255, 0);
shuffle($color);// shuffle array
$first_color = $color[0]; // get first array
$my_color = imageColorAllocate($img, $first_color[0],$first_color[1],$first_color[2]);
Date :
2011-01-11 02:43:54
By :
LindyFralin
ขอบคุณทุกคำตอบนะครับ ตอนนี้แก้ไขเรื่องสีได้แล้ว
เหลือแค่การสุ่มฟอนท์ กำลังหาวิธีทำอยู่ครับ
ช่วยแนะนำหน่อยนะครับ
Date :
2011-01-13 09:12:47
By :
notton
Load balance : Server 01