การสร้างงานกราฟิก ในภาษา php ศูนย์คอมพิวเตอร์ โรงเรียนปลวกแดงพิทยาคม
ขั้นตอนการสร้างรูปภาพ 1. สร้างรูปภาพว่างๆขึ้นมาใหม่ 2. กำหนดสี 3. วาดเส้น รูปทรง หรือเขียนข้อความ 4. ส่งผลลัพธ์เป็นรูปแบบของภาพ 5. คืนทรัพยากรให้ระบบ
1. สร้างรูปภาพว่างๆขึ้นมาใหม่ เปรียบเสมือนสร้างผ้าใบในการวาดภาพ ใช้ฟังก์ชัน ImageCreate ดังนี้ resource = ImageCreate(int ความกว้าง, int ความสูง); เช่น $im = ImageCreate(300, 200); เป็นการสร้างรูปขนาดกว้าง 300 สูง 200 โดยมีตัวแปร $im เป็นตัวอ้างอิง
2. กำหนดสี เหมือนกับการเตรียมสีเอาไว้ก่อน ใช้ฟังก์ชัน ImageColorAllocate คือ int ImageColorAllocate(resource รูปภาพ, int ค่าสีแดง, int ค่าสีเขียว, int ค่าสีน้ำเงิน ); เช่น $black = ImageColorAllocate($im,0,0,0); $red = ImageColorAllocate($im,255,0,0);
3. วาดเส้น รูปทรง หรือเขียนข้อความ เช่น ถ้าต้องการวาดรูปสี่เหลี่ยม ก็ให้ใช้ฟังก์ชัน ImageFilledRectangle ดังนี้ bool ImageFilledRectangle(resource รูปภาพ, int x1, int y1, int x2, int y2,int สี); โดยที่ x1 เป็นจุดเริ่มต้นในแนวนอน x2 เป็นจุดสิ้นสุดในแนวนอน y1 เป็นจุดเริ่มต้นในแนวตั้ง y2 เป็นจุดสิ้นสุดในแนวตั้ง เช่น ImageFilledRectangle($im,10,10,90,90,$red)
4. ส่งผลลัพธ์เป็นรูปแบบของภาพ การสร้างภาพกราฟิกในภาษา php เป็นเสมือนการเขียนคำสั่งสร้างไฟล์ php ให้เป็นรูปภาพ การส่งผลลัพธ์เป็นรูปภาพมีอยู่ 2 ขั้นตอนคือ 4.1 กำหนด header 4.2 ส่งข้อมูลรูปภาพ
4.1 กำหนด header เช่น กรณีต้องการสร้างรูปแบบ PNG ให้ส่งข้อมูล header ดังนี้ header(“Content-type:image/png”);
4.2 ส่งข้อมูลรูปภาพ เช่น ต้องการสร้างส่งรูปภาพแบบ PNG ให้ใช้ฟังก์ชัน ImagePNG ดังนี้ ImagePNG($im);
5. คืนทรัพยากรให้ระบบ เมื่อสร้างรูปเสร็จให้คืนทรัพยากรแก่ระบบโดยใช้ฟังก์ชัน ImageDestroy ดังนี้ ImageDestroy($im);
ตัวอย่างการสร้างงานกราฟิก 1. พิมพ์คำสั่งแล้วบันทึกเป็นไฟล์ php 2. เวลาเปิดดูให้เรียกไฟล์นั้น 3. ถ้าอยากแสดงรูปนั้นในไฟล์อื่น ให้ใช้ tag img เหมือนกับแรแสดงรูปทั่วไป เช่น <img src=myimg.php>
<?php //1.สร้างรูปภาพขนาด 300 x 200 $im = ImageCreate(300,200); //2.กำหนดสีที่ใช้ระบายรูปภาพ $red = ImageColorAllocate($im,255,0,0); //3.วาดสี่เหลี่ยม ImageFilledRectangle($im,0,0,90,90,$red); //4.1 ส่งข้อมูลเฮดเดอร์ไปยังเว็บบราวเซอร์ Header(“Content-type: image/png”); //4.2 ส่งข้อมูลรูปภาพให้เว็บบราวเซอร์ ImagePNG($im); //5. คืนทรัพยากรสู่ระบบ ImageDestroy($im); ?>
ตัวอย่างการสร้างงานกราฟิก
การวาดรูปทรงต่างๆ เมื่อทราบขั้นตอนการสร้างรูปกราฟิกแล้วขั้นต่อไปเป็นการนำเสนอ ฟังก์ชันสำหรับวาดรูปทรงต่างๆ
การวาดเส้นตรง ใช้ฟังก์ชัน ImageLine มีรูปแบบคือ bool ImageLine(resource รูป, int x1, int y1, int x2, int y2, int สี); เป็นฟังก์ชันวาดเส้นตรงจากตำแหน่ง x1,y1 ไปยัง x2,y2 เช่น ImageLine($im, 5, 5,20,20,$red); 5,5 20,20
การวาดเส้นโค้ง ใช้ฟังก์ชัน ImageArc มีรูปแบบคือ bool ImageLine(resource รูป, int cx, int cy, int w, int h, int s,int e,int สี); โดยที่ cx,cy คือจุดศูนย์กลาง กว้าง w สูง h เส้นโค้งเริ่มที่มุม s จบที่มุม e ดังรูป กว้าง w สูง h cx,cy s องศา e องศา
การวาดสี่เหลี่ยม หมายถึงสี่เหลี่ยมที่มีเฉพาะเส้นไม่ระบายพื้น ใช้ฟังก์ชัน ImageRectangle มีรูปแบบคือ bool ImageRectangle(resource รูป, int x1, int y1, int x2, int y2, int สี); เช่น ImageRectangle ($im, 5, 5,20,20,$red); 5,5 20,20
การวาดวงรี/วงกลม ใช้ฟังก์ชัน ImageEllipse มีรูปแบบคือ bool ImageEllipse(resource รูป, int cx, int cy, int w, int h, int สี); โดยที่ cx,cy คือจุดศูนย์กลาง กว้าง w สูง h ตามสีที่กำหนด เช่น ImageEllipse($im,100,100,50,30,$red) กว้าง 50 สูง 30 100,100
การวาดรูปหลายเหลี่ยม ใช้ฟังก์ชัน ImagePolygon รูปแบบคือ bool ImagePolygon(resource รูป, array จุดยอด, int จำนวนจุดยอด, int สี); ตัวอย่างการสร้าง array ของจุดยอด เช่นมี 3 จุดคือ (0,0),(100,200),(300,200) จะต้องสร้างอะเรย์ดังนี้ $point = array(0,0,100,200,300,200); ตัวอย่าง ImagePolygon($im,$point,3,$red);
การวาดรูปทรงทึบ นอกจากรูปเส้นโปร่งแล้ว ยังมีฟังก์ชันสำหรับวาดรูปพร้อมกับระบายสีพื้นด้วยโดยมีรูปแบบเหมือนกับรูปโปร่งทุกประการ โดยมีฟังก์ชันดังนี้ วาดรูปส่วนโค้งแบบระบาย ImageFilledArc(resource รูป,int cx,int cy,int w, int h, int s, int e, int รูปแบบ ); โดยที่ รูปแบบ มี 4 รูปแบบคือ IMG_ARC_CHORD วาดเส้นตรงจากมุมเริ่มต้นมายังมุมสิ้นสุด IMG_ARC_PIE กำหนดให้วาดเส้นโค้งจากมุมเริ่มต้นมายังมุมสิ้นสุด IMG_ARC_NOFILL ไม่ต้องเติมสี IMG_ARC_EDGED จะเป็นเส้นขนมพาย
การวาดรูปทรงทึบ(ต่อ) นอกจากรูปเส้นโปร่งแล้ว ยังมีฟังก์ชันสำหรับวาดรูปพร้อมกับระบายสีพื้นด้วยโดยมีรูปแบบเหมือนกับรูปโปร่งทุกประการ โดยมีฟังก์ชันดังนี้ วาดรูปวงรีวงกลมแบบระบาย ImageFilledEllipse(resource รูป, int cx, int cy, int w, int h, int สี); ImageFilledRectangle(resouce รูป,int x1, int y1, int x2, int y2, int สี); ImageFilledPolygon(resource รูป, array จุดยอด, int จำนวนจุด, int สี);
// สร้างรูปเปล่าขนาด 500 x 200 $im = ImageCreate(500,200); <?php // สร้างรูปเปล่าขนาด 500 x 200 $im = ImageCreate(500,200); // กำหนดค่าสี ImageColorAllocate($im,255,255,255); $red = ImageColorAllocate($im,255,0,0); $blue = ImageColorAllocate($im,0,0,255); //วาดรูปทรงทึบแบบต่างๆ ImageFilledArc($im,100,100,200,200,180,235,$red,IMG_ARC_PIE); ImageFilledEllipse($im,200,150,300,80,$blue); $points = array(340,50,320,180,360,60,640,40,350,40,300,10); ImageFilledPolygon($im, $points, 6, $red); //กำหนดรูปเป็น image และ คืนค่าสู่ระบบ Header(“Content-type: img/png”); ImagePNG($im); ImageDestroy($im);
ตัวอย่างการสร้างงานกราฟิก
การวาดข้อความลงในรูป ใช้ฟังก์ชัน ImagePolygon และ ImageStringUp รูปแบบคือ bool ImageString(resource รูป, int ฟอนต์, int x,int y, string ข้อความ, int สี ); bool ImageStringUp ( resource รูปภาพ, int x, int y, string ข้อความ, int สี ); โดย ImageString มุมบนซ้ายของข้อความจะอยู่ที่ตำแหน่ง x,y ฟอนต์ต้องเป็นจำนวนเต็มตั้งแต่ 1 ถึง 5 ได้แต่ภาษาอังกฤษ ส่วน ImageStringUp ก็จะเหมือนกัน เพียงแต่จะวาดข้อความในแนวตั้ง
<?php $im = ImageCreate(300,160); ImageColorAllocate($im,255,255,255); $red = ImageColorAllocate($im,255,0,0); $blue = ImageColorAllocate($im,0,0,255); //วาดข้อความแนวนอน $y = 0; for ($f=1;$f<=5;$f++){ ImageString($im,$f,0,$y,“PHP FONT $f”,$blue); $y+=20; } //วาดข้อความแนวตั้ง $x = 180; ImageStringUp($im,$f,$x,150,“PHP FONT $f”,$red); $x+=20; Header(“Content-type: img/png”); ImagePNG($im); ImageDestroy($im);
ตัวอย่างการสร้างงานกราฟิก