ปกติแล้ว PHP เองก็สามารถวาดภาพได้ด้วย GD Library
gd is a graphics library. It allows your code to quickly draw images complete with lines, arcs, text, multiple colors, cut and paste from other images, and flood fills, and write out the result as a PNG or JPEG file. This is particularly useful in World Wide Web applications, where PNG and JPEG are two of the formats accepted for inline images by most browsers.
gd is not a paint program. If you are looking for a paint program, you are looking in the wrong place. If you are not a programmer, you are looking in the wrong place, unless you are installing a required library in order to run an application.
gd does not provide for every possible desirable graphics operation. It is not necessary or desirable for gd to become a kitchen-sink graphics package, but version 2.0 does include most frequently requested features, including both truecolor and palette images, resampling (smooth resizing of truecolor images) and so forth.
ซึ่ง GD
Library เอง ได้รับความนิยมมาก โดยเฉพาะกลุ่ม opensource
เราสามารถใช้ชุดคำสั่งในภาษาต่างๆ ซึ่งส่วนใหญ่จะมีให้ใช้แล้ว (build
in) ดังนี้ PHP, PERL, OCaml, Tcl, Pascal, REXX และภาษาอื่นๆ
อีก
จริงๆ เราสามารถใช้ GD ได้กับทุกๆ ภาษา
โดยวิธีส่งไปให้โปรแกรมสร้างภาพ โดยผ่าน command line ก็ได้
ซึ่งโปรแกรมลักษณะนี้ ก็มีโปรแกรม fly ที่คุณ
Martin
Gleeson ได้พัฒนาขึ้นมา
การจะทำ Graph ด้วย PHP นั้น ก็ทำได้ไม่ยาก แค่วาดภาพกราฟฟิก
ผู้พัฒนาอาจต้องมีความรู้เรื่องการคำนวณ การวาดภาพ เป็นต้น
ปัจจุบันมี script library ที่ช่วยในการวาดภาพหรือทำกราฟมากมาย
ทั้งแบบ opensource และ commercial สำหรับ opensource เรามาดูกันว่า
มีตัวไหนน่าสนใจบ้าง
JpGraph
ผมคิดว่า JpGraph เป็น graph script ที่ดีที่สุด เท่าที่เห็นมา
JpGraph Architecture
ตัวอย่างการใช้งาน
$graph = new graph(150, 150, 'fig1.png', 0, false);
$graph->img->SetMargin(30, 30, 30, 30);
$graph->SetScale('textlin');
$line1 = new LinePlot($data);
$graph->Add($line1);
$graph->Stroke();
จะได้

Introduction to JPGraph - Part I, Part
II
Zend tutorial on how to use JpGraph
Libchart




ตัวอย่างการใช้งาน
include "libchart/libchart.php";
header("Content-type: image/png");
$chart = new VerticalChart(500,250);
$chart->addPoint(new Point("Jan 2005", 273));
$chart->addPoint(new Point("Feb 2005", 321));
$chart->addPoint(new Point("March 2005", 442));
$chart->addPoint(new Point("April 2005", 711));
$chart->setTitle("Monthly usage for www.example.com");
$chart->render();
?>
GDGraph 1.1
ว่าจะไม่เอามาลงอยู่แล้ว ไม่ได้มีจุดเด่นอะไรเท่าไหร่ สามารถสร้าง Bar Graph, Pie Graph และ Line Graph แต่ดูแล้วสู้ตัวอื่นไม่ได้
Links
GD Library
Libchart
jpgraph ออกภาษาไทยได้ไหม, คนไม่เคยใช้
อยากทราบวิธีทำ report ด้วย PHP ครับ
ลง PHP + GD Library บน Linux, ยังทำไม่สำเร็จ
วาดรูปให้เป็นแบบ dynamic






ขอแจมมั่งครับ
การทำให้ JP Graph แสดงอักษรภาษาไทยได้
เริ่มต้นต้องไป define font ให้แก่ jpgraph.php
ประมาณบรรทัดที่ 70 จะเป็นการ define TTF นะครับ เราต้อง DEFINEfont ที่ต้องการใช้ไว้ ผมจะยกตัวอย่างเป็นTAHOMA นะครับ
เลข n คือเลขลำดับน่ะครับ เราก็ใส่เลขต่อจาก font ที่ define ไว้ก่อนหน้า (เช่น DEFINE("FF_MICROSS",44);
DEFINE("FF_TAHOMA",45);) นะครับ
ต่อไปจะเป็นการ define path ของ font น่ะครับ อาจจะ configure ใน jpg-configure หรือใน jpgraph.php
ประมาณบรรทัดที่ 52 ของ jpgraph.php จะมีเงื่อนไขว่า !define(TTF_DIR) น่ะครับ ในเงื่อนไขนั้นจะมีให้ตั้ง path ของ font TTF ของ OS window กับ OS อื่นๆ ใส่ path ของ font เข้าไปเลยครบ เช่น เก็บ font TAHOMA.TTF ไว้ใน /home/www/htdocs/eutility/jpgraph/fonts/
ก็จะกำหนด TTF_DIR เป็น DEFINE('TTF_DIR','/home/www/htdocs/eutility/jpgraph/fonts/');
ตัวอย่างจากโค้ด
if (strstr( PHP_OS, 'WIN') ) {
$sroot = getenv('SystemRoot');
if( empty($sroot) ) {
die('JpGraph Error: No path specified for TTF_DIR and path can not be determined automatically. Please specify TTF_DIR manually (in jpg-config.inc).');
}else {
DEFINE('TTF_DIR', $sroot.'/fonts/');
}
}else {
DEFINE('TTF_DIR','/home/www/htdocs/eutility/jpgraph/fonts/');
}
}
ต่อมาจะแก้ไข class TTF โดยแก้ไข array font_files
โดยเพิ่ม element เข้าไป ตัวอย่างจะเป็นการเพิ่ม element ของ font TAHOMA
สุดท้ายต้องทำการเปลี่ยนโค้ดอักษรภาษาไทยสักหน่อย กระผมเองก็ไม่ทราบเหตุผลน่ะครับ(หุๆ ก็แค่ใช้เป็นน่ะครับ ไม่ได้เก่งอะไรมากนัก)
เอาฟังก์ชัน php อันนี้ไว้ใช้
$x = "";
$len = strlen($s);
for ( $i = 0; $i < $len; $i++)
{
if ( ord($s[$i]) > 128 )
$x .= "&#".(ord($s[$i]) - 160 + 3584).";";
else
$x .= $s[$i];
}
return $x;
}
ตัวอย่างการเรียกใช้
$graphName=UniThai($graphName);
$graph->title->Set($graphName);
$graph->title->SetFont(FF_TAHOMA,FS_NORMAL);
อ่านไม่รู้เรื่องเลย แฮ่ะๆ
เอาเป็นว่า ขั้นตอนการทำให้ jpgraph ใช้ภาษาไทยได้ก็จะมี
มีปัญหาก็ติดต่อมาที่ [email protected] ได้นะครับ ยินดีช่วยเหลือ
libchart-1.1 ใช้ภาษาไทยได้หรือเปล่าครับ
ขอคำแนะนำขั้นตอนการติดตั้ง PHP GD2 Library
ขอบคุณครับ