PHP

Home

PHP Tutorial
Knowledge Developer Database Internet Resource
กราฟฟิกและภาพ
1. การประมวลผลกราฟฟิก
2. การสร้างภาพ
3. การปรับปรุงกราฟฟิก
 
PHP ระดับสูง
1. การอัพโหลด
2. ฟังก์ชันเมล์และเครือข่าย
3. วันที่และเวลา
4. กราฟฟิกและภาพ
 
PHP
PHP เบื้องต้น
การสร้างโปรแกรมประยุกต์เว็บ
PHP ระดับสูง
 
Internet
PHP
SSI
HTML
AJAX
 
PHP ระดับสูง > กราฟฟิกและภาพ

การสร้างภาพ

ขั้นตอนการสร้างภาพใน PHP มี 4 ขั้นตอน ดังนี้

  1. สร้าง canvas
  2. วาดรูปทรงหรือพิมพ์ข้อความบน canvas
  3. ส่งออกกราฟฟิกสุดท้าย
  4. ทำความสะอาดทรัพยากร

สคริปต์ตัวอย่าง string_graphic.php เป็นการเขียนข้อความและจัดอย่างอัตโนมัติบนพื้นที่ภาพที่เตรียมไว้


ภาพ 3.4.1 การวาดข้อความบนภาพที่กำหนด

การสร้าง Canvas

การเริ่มสร้างหรือเปลี่ยนภาพใน PHP จำเป็นต้องสร้าง identifier ของภาพ การทำสิ่งนี้มี 2 วิธีพื้นฐาน วิธีหนึ่งคือการสร้าง canvas เปล่า ซึ่งสามารถทำด้วยการเรียกฟังก์ชัน ImageCreate() เหมือนกับในสคริปต์นี้
$im = ImageCreate ($width, $height);

ต้องส่งผ่าน 2 พารามิเตอร์ไปยัง ImageCreate() พารามิเตอร์แรกคือ ความกว้างของภาพใหม่และพารามิเตอร์ที่ 2 คือ ความสูงของภาพใหม่ ฟังก์ชันนี้จะส่งออก identifier สำหรับภาพใหม่

อีกวิธีหนึ่ง คือ อ่านไฟล์ภาพที่สามารถกรอง ปรับขนาด หรือเพิ่มด้วยการเลือกใช้ฟังก์ชัน ImageCreate FromPNG(), ImageCreateFromJPEG() หรือ ImageCreateFromGIF() ขึ้นกับรูปแบบไฟล์ที่กำลังอ่าน แต่ละฟังก์ชันใช้ชื่อไฟล์เป็นพารามิเตอร์
$im = ImageCreateFromPNG ("baseimage.png");

การวาดหรือพิมพ์ข้อความบนภาพ

การวาดหรือพิมพ์ข้อความบนภาพมี 2 ขั้น

ขั้นแรก เลือกสีที่ต้องการวาด บนจอภาพคอมพิวเตอร์สีประกอบด้วยสัดส่วนต่างกันของสีแดง สีเขียว และสีน้ำเงิน รูปแบบภาพใช้จานสี (palette) ที่ประกอบด้วยชุดย่อยของส่วนประกอบที่เป็นไปได้ของสีหลักการใช้สีเพื่อวาดบนภาพต้องเพิ่มสีนี้เข้าสู่จานสีของภาพ และต้องทำกับทุกสีที่ต้องการใช้รวมถึงสีขาวและสีดำ
การเลือกสีสำหรับภาพให้เรียกฟังก์ชัน ImageColorAllocate() การกำหนดสีให้ส่งผ่าน identifier ของภาพและค่าสีแดง สีเขียว และสีน้ำเงิน (RGB) ที่ต้องการวาดไปยังฟังก์ชันนี้

ในสคริปต์ใช้ 5 สี คือ ขาว ดำ แดง เขียว และน้ำเงิน
$white = ImageColorAllocate ($im, 255, 255, 255);
$black = ImageColorAllocate ($im, 0, 0, 0);
$red = ImageColorAllocate ($im, 255, 0, 0);
$green = ImageColorAllocate ($im, 0, 255, 0);
$blue = ImageColorAllocate ($im, 0, 0, 255);

ฟังก์ชันนี้ส่งออก identifier ของสีที่สามารถใช้เข้าถึงสีต่อไป

ขั้นที่ 2 การวาดไปยังภาพ มีหลายฟังก์ชันต่างกัน ขึ้นกับความต้องการในการวาด เช่น เส้นตรง เส้นโค้ง รูปเหลี่ยม หรือข้อความ
โดยทั่วไปการวาดฟังก์ชันต้องการพารามิเตอร์ต่อไปนี้

  1. identifier ของภาพ
  2. พิกัดเริ่มต้น และพิกัดสิ้นสุดในบางครั้ง
  3. สี
  4. สารสนเทศของฟอนต์สำหรับในบางครั้ง

เริ่มต้นจากการวาดพื้นหลังสีดำด้วยการใช้ฟังก์ชัน ImageFill()
Imagefill($im, 0, 0, $black);

สำหรับสคริปต์ string_graphic.php สร้างภาพด้วย ImageFilledRectangle () ด้วยเรียงลำดับแต่ละสี โดยความสูงของแต่ละภาพเป็น 15 พิกเซล

<?php

// set for filled color
// height
$step = 15; 
// start x coordinator
$x = 10;
// set right end
$x1 = $width - 10;
// start y coordinator
$y = 0;
// start y coordinator
$y1 = $step;

for( $i = 1; $i <= 6; $i++)
{

if ($i == 1 || $i == 6)
  $color = $green;
elseif ($i == 2 || $i == 5)
  $color = $red;
else
  $color = $blue;

// set next y coordinator
$y = $y1;
// set next height
$y1 = $y1 + $step;
// draw rectangle image
ImageFilledRectangle($im, $x, $y, $x1, $y1, $color);

?>

การเขียนข้อความบนภาพ
ImageString ($im, 4, 50, 150, "sales", $white);

ฟังก์ชัน ImageString () ใช้พารามิเตอร์ต่างไปเล็กน้อย ไวยากรณ์ของฟังก์ชันคือ
int imagestring (int im, int font, int x, int y, string s, int cal)

ฟังก์ชันนี้ใช้พารามิเตอร์คือ identifier ของภาพ ฟอนต์ พิกัด x และ y สำหรับตำแหน่งเริ่มต้นข้อความ ข้อความและสี

ฟอนต์เป็นตัวเลขระหว่าง 1 กับ 5 สิ่งนี้แสดงชุดฟอนต์ทางเลือกอื่น สามารถใช้ฟอนต์ True type หรือ Post Script type 1 ชุดฟอนต์แต่ละชุดตรงกับชุดของฟังก์ชัน

เหตุผลที่ดีสำหรับการใช้ชุดฟังก์ชันทางเลือกคือ ข้อความที่เขียนโดย ImageString () และ ฟังก์ชันที่เกี่ยวข้อง เช่น ImageChar() (เขียนตัวอักษรบนภาพ) เป็นอีกชื่อหนึ่ง ฟังก์ชัน Truetype และ PostScript สร้างข้อความแบบ anti-aliased

ส่งออกผลลัพธ์กราฟฟิก

ผลลัพธ์ของภาพสามารถแสดงโดยตรงกับ browser หรือ ไฟล์

ตัวอย่างนี้ ส่งผลลัพธ์ของภาพไปยัง browser โดยเป็นขั้นตอน 2 กระบวนการ ขั้นตอนแรกจำเป็นต้องบอก browser ว่ากำลังส่งผลลัพธ์เป็นภาพแทนที่ข้อความหรือ HTML ด้วยการใช้ฟังก์ชัน Header() เพื่อระบุประเภท MIME ของภาพ
header ("Content-type: image/png");

ตามปกติเมื่อดึงไฟล์ใน browser ประเภท MIME type เป็นสิ่งแรกที่แม่ข่ายเว็บส่ง สำหรับเพจ HTML หรือ PHP (หลังการประมวลผล) สิ่งแรกที่ส่งคือ
Content-type: text/html

สิ่งนี้บอก browser ให้แปลข้อมูลต่อไป
ในกรณีนี้ต้องบอก browser ว่ากำลังส่งภาพแทนที่ผลลัพธ์ HTML ตามปกติการใช้ฟังก์ชัน header()

หลังจากส่งข้อมูลส่วนหัว ส่งผลลัพธ์ข้อมูลภาพด้วยการเรียก
ImagePNG ($im);

นี่เป็นการส่งผลลัพธ์ไปยัง browser ในรูปแบบ PNG ถ้าต้องการส่งในรูปแบบต่างกัน ให้เรียก ImageJPEG () ถ้าการสนับสนุน JPEG ใช้ได้ หรือ ImageGIF() ถ้า GD เป็นเวอร์ชันเก่า รวมถึงต้องส่ง body ให้ตรงกันก่อนด้วย
header ("Content-type: image/jpeg");

หรือ สำหรับ GIF
header ("Content-type: image/gif");

ทางเลือกที่ 2 สามารถใช้ได้ คือ เขียนภาพเป็นไฟล์แทนที่ browser การทำแบบนี้ให้เพิ่มพารามิเตอร์ตัวเลือกที่ 2 กับ ImagePNG()
ImagePNG ($im, $filename);

ทำความสะอาด

เมื่อทำงานกับภาพเสร็จแล้วต้องส่งทรัพยากรที่ใช้กลับไปยังแม่ข่ายโดยการลบ identifier ด้วยการเรียก ImageDestroy ()

ImageDestroy ($im);

 


  

สงวนลิขสิทธิ์ (C) widebase / Julaphak