php-gd-[]
DESCRIPTION
ػیؼشن سٌظین اكَل gd در پًیا بیتی گرافیک هششجن : اهجذ هؼؼَد ی اَذاف آمًزش ایه مًرد در از ٌاستفاد با ػطح : هقذهبسی www.ParsBook.org ّبی ػیؼشن دیگش unix ثشَاًٌذ ِک كَسسی دس ّن ِدبی Apache , Php , gd هی کٌٌذ اجشا سا ثگیشًذ قشاس ُاػشفبد هَسد سَاًٌذ . masoudmanson | Php & GD ویاز مًرد سیستم www.ParsBook.org ِث سب داسیذ ًیبص ؿوب :TRANSCRIPT
masoudmanson | Php & GD
GD با استفاد از phpگرافیک بیتی پیا در
هقذهبسی: ػطح
Jacek Artymiak: لفؤه
یهؼؼد اهجذ: هششجن
قبل از ایىک ضريع کىیذ -بخص ايل
در مرد ایه آمزش
ثبؿیذ، ایي سا داؿش phpاگش دس کبس یب دشط سبى یبص ث ؿشي ثشبه بی گشافیکی ثب
.یبسی کذ gd کشبثخب ی phpسا دس سلیذ سلبیش ثیشی دیب ثب اػشفبد اص آهصؽ هی ساذ ؿوب
سجبسر، اهس هبلی یک ػکغ ثشش اص ضاس کلو اػز، هخلكب اگش اص آى ثشای ـبى دادى
اگش ؿوب ثشایذ سلبیش سا ثب سج ث دسخاػز ب ایجبد کیذ، .یب اطالػبر ػلوی اػشفبد ؿد
.یي ثشاثش هی ؿد هی ساذ آخشیي اطالػبر سا دس قبلت سلبیش ث سلیش ثکـذسبثیش آب چذ
اذاف
دس دبیبى ایي آهصؽ ؿوب قبدس خایذ ثد اػکشیذز بیی سا ثشای ایجبد سلبیش ثیشی ثب
php کشبثخب ی gd ؿوب خایذ ساؼز ث ساحشی اطالػبر سجبسی ، هبلی ػلوی سا .ثیؼیذ
: ث یظ ؿوب هاسد صیش سا هی آهصیذ. ثکـیذ شث سلی
اكل سظین ػیؼشنgd
www.ParsBook.org
masoudmanson | Php & GD
کبر هخلف ػیؼشن ػبهل ثشای سؼیل سظین ػیؼشن
کبر هشثط ث لتphp/gd
هشاحل آهبد ػبصیcanvas , color palette , background fill/image
اكل الی ی طشاحی ثبgd
شبیج سلیشی داد ب سوشیي بیی ثشای کوک ث اسائ ی
کبسی دیشاهى اشخبة فشهز هبػت ثشای فبیل ب
دػشسالؼول بیی ثشای جب دادى اػکشیذز بیشبى دس کذ بیhtml
سیستم مرد ویاز
:ؿوب یبص داسیذ سب ث
هي ػیؼشن ػبهل بی صیش سا دیـبد هی . یک ػیؼشن ػبهل خة دػششػی داؿش ثبؿیذ
:کن
- Linux
- Free/Net/OpenBSD
- Microsoft Windows XP/7
- Mac OS X
سا اجشا کذ هی Apache , Php , gdدبی ن دس كسسی ک ثشاذ unixدیگش ػیؼشن بی
.ساذ هسد اػشفبد قشاس ثگیشذ
یب ثیـشش 100MHzثب کالک CPUیک -
- 32MB سم یب ثیـشش
- 500MB بسد دیؼک
سا ػبدسر هی کذ اػشفبد کیذ ک phpک HTTP serverػال ثش ایي ؿوب هی سایذ اص یک
:دس ایي كسر ث کشبثخب بی صیش یض یبص خایذ داؿز
www.ParsBook.org
masoudmanson | Php & GD
- freetype2
- zlib
- libpng
- libjpeg6
ساخت ابسار مرد ویاز با استفاد از سرس کذ آوا
ذ هججس خایذ اگش ؿوب شایذ ثؼش بی کبهذبیل ؿذ ی آهبد سا ثشای ػیؼشن سبى دیذا کی
.ثؼبصیذ GCCوبذ ++ANSI C/Cؿذ خدسبى آب سا ثب اػشفبد اص یک کبهذبیلش
:ثؼش بی هسد یبص سا هی سایذ اص لیک بی صیش دسیبفز کیذ
• Apache: http://www.apache.org/dist/httpd/
• PHP: http://www.php.net/downloads.php
• gd: http://www.boutell.com/gd/
• libpng: http://www.libpng.org/pub/png/libpng.html
• zlib: http://www.gzip.org/zlib/
• libjpeg: http://www.ijg.org/
• freetype2 (optional, required for rendering TrueType
fonts): http://www.freetype.org/
• t1lib (optional, required for rendering Type 1 fonts):
http://freshmeat.net/projects/t1lib/
ثشای اطالػبر ثیـشش دس هسد ح ی لت ػبخز ثؼش بی ثبال هی سایذ ث فبیل
ؼش ب سا ث سشسیت صیش ؿوب ثبیذ ث. ش کذام اص آب هشاجؼ کیذ INSTALLیب READMEبی
:لت کیذ
www.ParsBook.org
masoudmanson | Php & GD
- zlib
- libpng
- libjpeg
- freetype2
- t1lib
- gd
- Apache
- Php
:اکثش ایي ثؼش ب سا هی ساى ثب کذ صیش لت کشد
$ ./configure
$ ./make
$ sudo ./make install
ابسار ای اضافی
. کبس یبص داسیذ یک هشسگش ة یک سکؼز ادیشس هی ثبؿذدیگش اثضاسی ک ثشای ایي
. اػشفبد کیذ... Mozilla Firefox , Opera , Chrome , IEثشای هشسگش هی سایذ اص
, Notepadثشای لیکغ vi , emacs , BBEditن هی سایذ اص text editorثشای
Wordpad , ... ثشای یذص اػشفبد کیذ.
php/gdتست
صهبی ک سوبهی اثضاس بی هسد یبص سا لت کشدیذ هی سایذ ثب اػشفبد اص د اػکشیذز
. ؿوب فؼبل ؿذ اػز کبس هی کذ gdػبد صیش هطوئي ؿیذ ک
:ایجبد کشد کذ صیش سا دس آى ثیؼیذ phpاثشذا یک كفح ی ػبد
<?php
phpinfo();
?>
. خد رخیش کشد ثب هشسگش اجشا کیذ wwwدس دایشکشسی test.phpبم اػکشیذز ثبال سا ثب
:ث كسر
www.ParsBook.org
masoudmanson | Php & GD
http://localhost/test.php
سفش ثشسػی gdث قؼوز . خایذ دیذ phpدس ایي كفح ؿوب جذل ثضسگی اص سوبهی هاسد
کیذ ک آیب فؼبل ؿذ اػز یب ؟
:ثیؼیذ gdػذغ اػکشیذز صیش سا ثشای سؼز
<?php
header (“Content-Type: iamge/jpeg”);
#set the dimentions of the canvas
$cw = 500;
$ch = 300;
#create canvas
$c = imagecreate ($cw , $ch);
#generate color palette
for ($n=0 ; $n <=255 ; $n++)
{
$cols[$n] = imagecolorallocate ($c , $n , $n , $n);
}
#create background
imagefilledrectangle ($c , 0 , 0 , 600 , 400 , $cols[255]);
www.ParsBook.org
masoudmanson | Php & GD
#display all characters in a font
$font = 4;
$dx = imagefontwidth($font);
$dy = imagefontheight($font);
$x = ($cw / 2) - (16 * $dx);
$y = ($ch / 2) - (4 * $dy);
$m = 0;
$z = 0;
for ($n = 0; $n <= 7; $n++)
{
for ($m = 0; $m <= 31; $m++)
{
imagechar($c, $font, $x + $dx * $m, $y, chr($z), $cols[0]);
$z++;
}
$y = $y + $dy;
}
#draw a nice thin border around the edges of the image
imagerectangle($c, 0, 0, $cw-1, $ch-1, $cols[0]);
#generate image
imagejpeg($c);
?>
:شیج ی کذ ثبال ؿکل صیش خاذ ثد
www.ParsBook.org
masoudmanson | Php & GD
قذم ای ايل: بروام ی خدتان را بىیسیذ - ديم بخص
درست ضريع کىیذ headerبا
. دسبى سا ثیؼیذخ gdحبال ک سؼز بی الی سا اجبم دادیذ، قز آى اػز ک اػکشیذز بی
.سا یبد ثگیشیذ gdثشای ایي کبس ؿوب ثبیذ ػبخشبس بی ػوهی یک اػکشیذز
:ش اػکشیذشی ک گشافیک ایجبد هی کذ ثبیذ ثب کذ صیش ؿشع ؿد
header (“Content-Type: image/jpeg”);
HTTPک سػط ػشیغ دذ ی سا HTTP headersؿوب ()headerثب اػشفبد اص سبثغ
(HTTP Server ) ث ػشیغ گیشذHTTP (HTTP Client ) اسػبل هیگشدد سا هقذاس دی هی
اػالم هی کذ HTTP Clientهی ثبؿذ ک ث Content-Typeب ، headerیکی اص ایي .کیذ
اص ایي اطالػبر ثشای سلوین گیشی دس هسد ح client .ک چ ع داد ای دسیبفز خاذ کشد
ثشای دشداصؽ ایي داد clientػذغ هوکي اػز . ی داد بی دسیبفشی اػشفبد هی کذی اجشا
ب اص هجذل بی خبسجی اػشفبد کذ یب دیغبهی هجی ثش ایک ث سبیی وی ساذ ایي اطالػبر سا
.دشداصؽ کذ، كبدس وبیذ
سا دسیبفز jpegهی گیذ ک یک ػکغ ثیشی دس فشهز clientث image/jpegثشای هثبل ،
هی ساذ سلوین ثگیشد ک آیب داد ی دسیبفشی سا دشداصؽ کذ، اص یک clientحبال . خاذ کشد
. سا وبیؾ دذ ثگیذ ک وی ساذ ایي ع خبف سلیش وبیـگش خبسجی اػشفبد کذ یب ث کبسثش
ذ کبسی سا ک ثشای آى ث هشسگش اسػبل ؿذ، اػکشیذز ؿوب هی سا Content-Typeثؼذ اص ایک
ث خبطش ثؼذبسیذ ک سب خشجی اػکشیذز ؿوب سؿش . هظس طشاحی ؿذ اػز سا اجبم دذ
ایي اهش ثبػث هی ؿد سب شایذ اص دػشساسی .بی ثیشی هی ثبؿذ ک سلیش سا سـکیل هی دذ
.دس آى اػکشیذز اػشفبد کیذ htmlثشای ؿشي کذ بی echo printهثل
www.ParsBook.org
masoudmanson | Php & GD
سا ث یک اػکشیذز htmlاهب گشاى جبؿیذ ، دس اداه ی ویي آهصؽ ح ی افضدى کذ بی
gd فؼال ح ی ػبخشي یک سلیش .ثشسػی خاین کشدbitmap ثبgd سا یبد ثگیشیذ.
(پرد وقاضی) canvasآماد سازی
آماد را (canvas)قبل از ایىک چیسی بکطیذ مثل یک وقاش ياقعی ايل پرد وقاضی
:اوجام دیذ ()imagecreateایه کار را می تاویذ با فراخاوی تابع . کىیذ
#set the dimentions of the canvas
$cw = 500;
$ch = 300;
#create canvas
$c = imagecreate ($cw , $ch);
کبس داسذ هسد ثش هیگشداذ سػط سوبهی ساثؼی ک ثب ػکغ ()imagecreateػذدی ک سبثغ
ایي کبس ث ؿوب ایي اهکبى سا هیذذ ک ثشایذ ثیؾ اص یک ػکغ سا دس یک .اػشفبد قشاس هی گیشد
ثش حبل، اػشفبد اص ایي یظگی هحذدیز بیی ن داسد، چشا ک اػکشیذز . اػکشیذز ایجبد کیذ
.ثفشػشذای ک فشاخای اؽ کشد، HTTP Clientهی ساذ سب یک ػکغ سا ث
اص طشفی دیگش وبى طس ک ثؼذا خایذ دیذ، هی سایذ د یب چذ ػکغ سا ثب ن سشکیت کیذ
.رخیش کیذ serverیب local diskیب ػکغ ب سا دس
هقبدیش ثب ثبیذ کذ هی هـخق سا ػکغ ػشم طل ک dimension هقبدیش ک کیذ سج
width height سگ دس <img> ؿد، هی داد وبیؾ سلیش كسر ایي غیش دس. ثبؿذ ثشاثش
.کیذ دقز هسد ایي ث حشوب. سیضد هی ن ث اهب
(جعب ی روگ) Paletteایجاد
www.ParsBook.org
masoudmanson | Php & GD
چذ paletteهی ساذ ثب gd 2.xاگش چ . اکى قز آى سػیذ ک کوی ثب سگ ب ثبصی کیذ
سگ اشخبة کیذ سب ن 256سبى سا paletteهیلیى سگی کبس کذ اهب ثشش اػز ؿوب اذاص ی
.gdوبگ ثبؿذ ن ثب ؼخ بی ثبالسش gd 1.8.xثب
سلیذ هی ؿد ک ایي سبثغ ()imagecolorallocateثب فشاخای سبثغ paletteش سگ دس
:چبس آسگهبى دسیبفز هیکذ
paletteجبیگب سگ دس -
255-0ػذدی ثیي redهقذاس هـخل ی -
255-0ػذدی ثیي greenقذاس هـخل ی ه -
255-0ػذدی ثیي blueهقذاس هـخل ی -
:خبکؼششی ایجبد هی کذ paletteثشای هثبل کذ صیش یک # Generate color palette
for ($n = 0; $n <= 255; $n++)
{
$cols[$n] = imagecolorallocate($c, $n, $n, $n);
}
سا دس اثشذا ثشبه سؼشیف کیذ هی سایذ آى سا ثؼذا دس paletteاگشچ یبصی یؼز ؿوب کل
ثشای دثبس سؼشیف . طل اػکشیذز ن سغییش دیذ، اهب سؼشیف آى دس اثشذای کذ خیلی صیجبسش اػز
اهب ثب canvas ID color IDثب وبى ()imagecolorallocateکشدى یک سگ اص سبثغ
ؿوب وچیي هی سایذ یک سگ سا ثب اػشفبد اص .شفبد کیذ، اػ R , G , Bهقبدیش هشفبسی اص
:، هثل دبک کیذ paletteاص ()imagecolordeallocateسبثغ imagecolordeallocate($c , $cols[7]);
(پس زمیى) Backgroundآماد سازی
ی ک هی خایذ ؿوب آصادیذ سب اص ش سکیک. اکى ؿوب آهبد ایذ سب ؿبکبس خد سا سػن کیذ
اػشفبد کیذ، اهب ث یبد داؿش ثبؿیذ ک اگش چیضی سا سػن کشدیذ وی ساذ بقق ثوبذ، ثبثشایي
. سؿی ک ػکغ خد سا سػن هی کیذ هن اػز
www.ParsBook.org
masoudmanson | Php & GD
ثب اػشفبد اص یک سگ ثبثز یب یک سلیش canvasثبثش ایي الیي کبس ثشای اجبم، سگ کشدى
import ذ کذ صیش هب .ؿذ اػز: # Create Background
ImageFilledRectangle($c, 0, 0, 499, 299, $cols[255]);
اص سبثغ یچ سبثغ خبكی دغ صهی سا ایجبد وی کذ، ثبثشیي ؿوب هی سایذ
imagefilledrectangle() اػشفبد کیذ ک یک هؼشطیل سگی سا ثش سیcanvas سػن هی
چبس آسگهبى ثؼذی ث سشسیت . هؼشطیلی اػز ک سػن ؿذ اػز IDسبثغ آسگهبى ال ایي .کذ
IDآسگهبى آخش ن .هخشلبر گؿ ی ثبال ػوز چخ گؿ ی دبییي ػوز ساػز هی ثبؿذ
()imagefilledrectangleالجش هی سایذ اص سبثغ . سگی اػز ک ث هؼشطیل صد ؿذ اػز
. اص اػکشیذز اػشفبد کیذثشای سػن هؼشطیل دس ش جبی دیگشی
اص گؿ ی ثبال ػوز چخ ؿشع ؿذ ث ػوز ساػز دبییي gdسج کیذ ک سلبیش
. گؼششؽ هی یبثذ
ثشای ایي هظس هی . هی ثبؿذ backgroundفبیل بی آهبد ث ػاى اػشفبد اص سؽ دم
:سایذ اص ساثغ صیش اػشفبد کیذ
• ImageCreateFromGD()
• ImageCreateFromGD2()
• ImageCreateFromGD2Part()
• ImageCreateFromGIF()
• ImageCreateFromJPEG()
• ImageCreateFromPNG()
• ImageCreateFromString()
• ImageCreateFromWBMP()
• ImageCreateFromXBM()
• ImageCreateFromXPM()
www.ParsBook.org
masoudmanson | Php & GD
• ImageCreateFromJPEG()
. فبیل بی ایشششی ثبؿذ url یب localساثغ هی ساذ هؼیش فبیل بی آسگهبى بی ایي
ایي سؽ دػششػی ث فبیل ب، اهکبى یظ ای سا ثشای ؿشي اػکشیذز بیی فشان هی کذ ک
هی سا ث كسر دیبهیک دالد... سلبیش ث سص ؿذ هثل سلبیش هباس ای یب سلبیش خجشی
هی سایذ اطالػبسی سا ک خدسبى هی خایذ ث آب اضبف کشد یب آب سا ثب سلبیش کذ ؿوب
سا لت کشد ثبؿیذ، ایي یظگی ب ثشش کبس خاذ کشد ؿوب اص gd 2.xاگش . دیگش سشکیت کیذ
.چذ هیلیى سگی ثش هذ خایذ ثد paletteیک
، هوکي اػز اذاص آى سا الصم داؿش ثبؿیذ ک هی سایذ صهبی ک ؿوب سلیشی سا اسد هی کیذ
.دسیبفز وبییذ ()getimagesizeخشجی سبثغ آى سا اص
gdاصل ايلی طراحی با -سم بخص
با پیکسل ا بازی کىیذ
آهبد ؿذ هی سایذ ش آچ سا ک هی خایذ ثب اػشفبد اص ساثغ صیش baclgroundدغ اص ایک
:یذسػن ک
• ImageSetPixel()
• ImageLine()
• ImageDashedLine()
• ImageRectangle()
• ImageFilledRectanlge()
• ImagePolygon()
• ImageFilledPolygon()
• ImageArc()
• ImageFilledArc()
www.ParsBook.org
masoudmanson | Php & GD
یبص آسگهبى 4ایي سبثغ فقط ث . یک دیکؼل سب سا هی کـذ ()imagesetpixelسبثغ ال، یؼی
:داسد
- Canvas ID
- X Coordinates
- Y Coordinates
- Color ID
ؿوب هی سایذ اص ایي سبثغ ثشای افضدى جضئیبر ث سلبیشسبى اػشفبد کیذ یب اص سبثغ
random() اػشفبد کیذ، وبذ هثبل صیش:
<?php
header("Content-Type: image/jpeg");
#set the dimensions of the canvas
$cw = 200;
$ch = 200;
#create canvas
$c = imagecreate($cw, $ch);
#generate color palette
for ($n = 0; $n <= 255; $n++)
{
$cols[$n] = imagecolorallocate($c, $n, $n, $n);
}
#create background
imagefilledrectangle($c, 0, 0, $cw, $ch, $cols[255]);
#draw some pixels
for ($n = 0; $n < $cw; $n++)
{
for ($m = 0; $m < $ch; $m++)
{
imagesetpixel($c, $n, $m, (int) rand(0, 255));
}
$m = 0;
}
#generate image
imagejpeg($c);
?>
:اػکشیذز ثبال سلیشی ث كسر صیش ایجبد خاذ کشد
www.ParsBook.org
masoudmanson | Php & GD
ايلیتصر داد ای -چارم بخص
ساخت یک ساعت با استفاد از خطط ي مىحىی ا
هگش ثشای طشاحبى )ثؼیبس صیجب ؼشذ، اهب صیبد ث دسد وی خسذ randomدس حبلی ک سلبیش
(.ب اػشفبد هی کذ textureگشافیکی ک اص ایي سلبیش ثشای ایجبد
ثشای ث سلیش کـیذى داد gdهثبل صیش یک هثبل ثؼیبص جزاة سش اػز ک ح ی اػشفبد اص
. بی اقؼی سا ـبى هی دذ
ایي . هي اص صهبى کی ثشای ػبخز ػبػشی ک صهبى ػشس سا ـبى هی دذ اػشفبد هی کن
()iamgearc() ،iamgelineػبػز هثبل خثی ثشای ـبى دادى ح ی اػشفبد اص ساثغ
imagedashedline() هی ثبؿذ .
<?php
header("Content-Type: image/jpeg");
# Set the dimensions of the canvas
$cw = 300;
$ch = 300;
# Create canvas
$c = imagecreate($cw, $ch);
# Generate color palette
$cols[0] = imagecolorallocate($c, 0, 0, 0);
$cols[1] = imagecolorallocate($c, 255, 255, 255);
$cols[2] = imagecolorallocate($c, 255, 0, 0);
$cols[3] = imagecolorallocate($c, 0, 255, 0);
$cols[4] = imagecolorallocate($c, 255, 0, 255);
www.ParsBook.org
masoudmanson | Php & GD
# Create background
imagefilledrectangle($c, 0, 0, $cw - 1,$ch - 1, $cols[1]);
# Compute coordinates of the center of the image
$x = (int) $cw / 2;
$y = (int) $ch / 2;
# Draw the circular border
imagearc($c, $x, $y, (int) ($cw * .9),(int) ($ch * .9), 0,
360,$color[0]);
# Read local time
$t = localtime();
# Initialize hour, minute, and second variables
$th = $t[2];
$tm = $t[1];
$ts = $t[0];
# Convert hour from 24- to 12-hour format
if ($th > 11)
{
$th -= 11;
}
# Prepare some constants
$hi = deg2rad(30);
$mi = deg2rad(6);
$adj = deg2rad(90);
# Compute coordinates of the hour, minute, and second hands
$th = $hi * $th - $adj;
$tm = $mi * $tm - $adj;
$ts = $mi * $ts - $adj;
# Compute the length and the coordinates of
# the hour hand
$hhl = $cw * .6;
$hhx = $hhl * cos($th);
$hhy = $hhl * sin($th);
# Compute the length and the coordinates of
# the minute hand
$mhl = $cw * .7;
$mhx = $mhl * cos($tm);
$mhy = $mhl * sin($tm);
# Compute the length and the coordinates of
# the second hand
$shl = $cw * .8;
$shx = $shl * cos($ts);
$shy = $shl * sin($ts);
# Draw the hour hand
imageline($c, $x, $y, $x + $hhx, $y + $hhy, $cols[2]);
# Draw the minute hand
www.ParsBook.org
masoudmanson | Php & GD
imageline($c, $x, $y, $x + $mhx, $y + $mhy, $cols[3]);
# Draw the second hand
imagedashedline($c, $x, $y, $x + $shx, $y + $shy,$cols[4]);
# Generate image
imagejpeg($c);
?>
refreshال ش قز هشسگش خد سا حب. ثؼذ اص اجشای اػکشیذز ثبال، ػبػز صیش سا خایذ دیذ
. ػشس سا خایذ دیذ localکیذ، صهبى
تصیر سازی اطالعات عذدی
هثبل ػبػز آبلگ یک هؼشفی جبلت ثشای سلیش ػبصی داد ب ثد، اهب اػشفبد اص آى دس هسد
سلیش ػبصی یک هثبل کبسثشدی سش ثشای . داد ب سجبسی ػلوی کوی هحذدیز ث وشا داسد
. داد ب هی ساذ وداس شبیج یک سحقیق دس احی هخشلف جغشافیبیی ثبؿذ
سگضاع ییسک خاػش ام سب ث ثشای ایي هثبل فشم کیذ هي اص سػؼ دذگبى کبلیفسیب،
ػذغ هي . GNUStepیب Gnome ، KDEهي ثگیذ ک اص کذام دػکشبح اػشفبد هی کذ،
www.ParsBook.org
masoudmanson | Php & GD
ایي دقیقب کبسی اػز ک اػکشیذز صیش اجبم هی . ش سی قـ ی آهشیکب ـبى خان دادشبیج سا ث
. دذ<?php
header("Content-Type: image/jpeg");
# Set the dimensions of the canvas
$cw = 300;
$ch = 300;
# Define chart-drawing function
function drawchart($c, $cx, $cy, $v1, $v2, $v3,$c0, $c1, $c2, $c3)
{
imagefilledrectangle($c, $cx, $cy - $v1,$cx + 10, $cy, $c1);
imagerectangle($c, $cx, $cy - $v1,$cx + 10, $cy, $c0);
imagefilledrectangle($c, $cx + 5, $cy - $v2,$cx + 15, $cy, $c2);
imagerectangle($c, $cx + 5, $cy - $v2,$cx + 15, $cy, $c0);
imagefilledrectangle($c, $cx + 10, $cy - $v3,$cx + 20, $cy, $c3);
imagerectangle($c, $cx + 10, $cy - $v3,$cx + 20, $cy, $c0);
}
# Map displacement values
$mdx = 0;
$mdy = 0;
# Make array of map points
$usa[0] = 30 + $mdx; $usa[1] = 50 + $mdy;
$usa[2] = 15 + $mdx; $usa[3] = 90 + $mdy;
$usa[4] = 40 + $mdx; $usa[5] = 130 + $mdy;
$usa[6] = 85 + $mdx; $usa[7] = 135 + $mdy;
$usa[8] = 120 + $mdx; $usa[9] = 170 + $mdy;
$usa[10] = 130 + $mdx; $usa[11] = 140 + $mdy;
$usa[12] = 180 + $mdx; $usa[13] = 125 + $mdy;
$usa[14] = 200 + $mdx; $usa[15] = 160 + $mdy;
$usa[16] = 215 + $mdx; $usa[17] = 165 + $mdy;
$usa[18] = 195 + $mdx; $usa[19] = 105 + $mdy;
$usa[20] = 210 + $mdx; $usa[21] = 70 + $mdy;
$usa[22] = 200 + $mdx; $usa[23] = 60 + $mdy;
$usa[24] = 215 + $mdx; $usa[25] = 15 + $mdy;
$usa[26] = 195 + $mdx; $usa[27] = 10 + $mdy;
$usa[28] = 165 + $mdx; $usa[29] = 50 + $mdy;
$usa[30] = 105 + $mdx; $usa[31] = 55 + $mdy;
$usa[32] = 95 + $mdx; $usa[33] = 45 + $mdy;
# Create canvas
$c = imagecreate($cw, $ch);
# Generate color palette
$cols[0] = imagecolorallocate($c, 0, 0, 0);
$cols[1] = imagecolorallocate($c, 255, 255, 255);
$cols[2] = imagecolorallocate($c, 255, 0, 0);
$cols[3] = imagecolorallocate($c, 0, 255, 0);
$cols[4] = imagecolorallocate($c, 0, 0, 255);
$cols[5] = imagecolorallocate($c, 255, 255, 0);
www.ParsBook.org
masoudmanson | Php & GD
# Create background
imagefilledrectangle($c, 0, 0, $cw - 1,$ch - 1, $cols[1]);
# Draw map
imagefilledpolygon($c, $usa, 17, $cols[3]);
# Draw map outline
imagepolygon($c, $usa, 17, $cols[0]);
drawchart($c, 190, 100, 80, 70,55,$cols[0], $cols[4],
$cols[2],$cols[5]);
drawchart($c, 100, 140, 60, 65, 40,$cols[0], $cols[4],
$cols[2],$cols[5]);
drawchart($c, 40, 100, 40, 90, 55,$cols[0], $cols[4],
$cols[2],$cols[5]);
# Generate image
imagejpeg($c);
?>
:کشیذز ثبال، سلیش صیش خاذ ثد شیج اػ
سا ثشای سػن وداس ب ایجبد کشد ام سب ()drawchartکیذ ک دس اػکشیذز ثبال هي سبثغ سج
. ؿوب ن هی سایذ اص ایي سؽ دس کبس بیشبى اػشفبد کیذ .کبسم ساحز سش گشدد
ی ثؼیبس ػبد هی ثبؿذ ک ؿبهل قـ ی آهشیکبیی ک دس هثبل ثبال کـیذ ؿذ اػز، یک قـ
()imagepolygonایي قـ ثب اػشفبد اص ساثغ . آالػکب بایی یؼز
imagefilledpolygon() کـیذ ؿذ اػز ک ش د سبثغ آسای ای اص اػذاد سا ث ػاى
. هخشلبر قبط چذ ضلؼی دسیبفز هی کذ
افسيدن کمی مته
www.ParsBook.org
masoudmanson | Php & GD
هقبدیش ػذدی ث سلبیش ثد، اهب ثب اػشفبد اص کوی هشي هی ساى آى هثبل قجلی کبس خثی اص سجذیل
هی سایذ هشى افقی ثب اػشفبد اص سبثغ ()imagestringثب اػشفبد اص سبثغ .سا هفیذ سش یض کشد
imagestringup() ش د سبثغ آسگهبى بی صیش سا . هشى ػودی سا دس سلبیش خد ثیؼیذ
:یبص داسذ
- Canvas ID
- Font ID
- X Coordinates
- Y Coordinates
- Text string
- Color ID
Font ID ثیشی سا هـخق سکبس فز 5هی ثبؿذ ک یکی اص 5-1یک هقذاس كحیح دس ثبص ی
. هی کذ
کذ صیش سػؼ یبفش . اػکشیذز صیش ح ی اػشفبد اص ایي ساثغ سا دس ػول ث ؿوب ـبى هی دذ
. ػزی هثبل قجل ا
<?php
header("Content-Type: image/jpeg");
# Set the dimensions of the canvas
$cw = 300;
$ch = 300;
# Define chart-drawing function
function drawChart($c, $cx, $cy, $v1, $v2, $v3,$c0, $c1, $c2, $c3)
{
ImageFilledRectangle($c, $cx, $cy - $v1,$cx + 10, $cy, $c1);
ImageRectangle($c, $cx, $cy - $v1,$cx + 10, $cy, $c0);
ImageFilledRectangle($c, $cx + 5, $cy - $v2,$cx + 15, $cy, $c2);
ImageRectangle($c, $cx + 5, $cy - $v2,$cx + 15, $cy, $c0);
ImageFilledRectangle($c, $cx + 10, $cy - $v3,$cx + 20, $cy, $c3);
ImageRectangle($c, $cx + 10, $cy - $v3,$cx + 20, $cy, $c0);
}
# Map displacement values
$mdx = 0;
$mdy = 0;
www.ParsBook.org
masoudmanson | Php & GD
# Make array of map points
$usa[0] = 30 + $mdx; $usa[1] = 50 + $mdy;
$usa[2] = 15 + $mdx; $usa[3] = 90 + $mdy;
$usa[4] = 40 + $mdx; $usa[5] = 130 + $mdy;
$usa[6] = 85 + $mdx; $usa[7] = 135 + $mdy;
$usa[8] = 120 + $mdx; $usa[9] = 170 + $mdy;
$usa[10] = 130 + $mdx; $usa[11] = 140 + $mdy;
$usa[12] = 180 + $mdx; $usa[13] = 125 + $mdy;
$usa[14] = 200 + $mdx; $usa[15] = 160 + $mdy;
$usa[16] = 215 + $mdx; $usa[17] = 165 + $mdy;
$usa[18] = 195 + $mdx; $usa[19] = 105 + $mdy;
$usa[20] = 210 + $mdx; $usa[21] = 70 + $mdy;
$usa[22] = 200 + $mdx; $usa[23] = 60 + $mdy;
$usa[24] = 215 + $mdx; $usa[25] = 15 + $mdy;
$usa[26] = 195 + $mdx; $usa[27] = 10 + $mdy;
$usa[28] = 165 + $mdx; $usa[29] = 50 + $mdy;
$usa[30] = 105 + $mdx; $usa[31] = 55 + $mdy;
$usa[32] = 95 + $mdx; $usa[33] = 45 + $mdy;
# Create canvas
$c = ImageCreate($cw, $ch);
# Generate color palette
$cols[0] = ImageColorAllocate($c, 0, 0, 0);
$cols[1] = ImageColorAllocate($c, 255, 255, 255);
$cols[2] = ImageColorAllocate($c, 255, 0, 0);
$cols[3] = ImageColorAllocate($c, 0, 255, 0);
$cols[4] = ImageColorAllocate($c, 0, 0, 255);
$cols[5] = ImageColorAllocate($c, 255, 255, 0);
# Create background
ImageFilledRectangle($c, 0, 0, $cw - 1, $ch - 1, $cols[1]);
# Draw map
ImageFilledPolygon($c, $usa, 17, $cols[3]);
# Draw map outline
ImagePolygon($c, $usa, 17, $cols[0]);
drawChart($c, 190, 100, 80, 70, 55,
$cols[0], $cols[4], $cols[2], $cols[5]);
drawChart($c, 100, 140, 60, 65, 40,
$cols[0], $cols[4], $cols[2], $cols[5]);
drawChart($c, 40, 100, 40, 90, 55,
$cols[0], $cols[4], $cols[2], $cols[5]);
# GNOME
ImageFilledRectangle($c, 60, 203, 70, 210, $cols[2]);
ImageRectangle($c, 60, 203, 70, 210, $cols[0]);
ImageString($c, 2, 75, 200, "GNOME", $cols[0]);
# KDE
ImageFilledRectangle($c, 120, 203, 130, 210, $cols[4]);
ImageRectangle($c, 120, 203, 130, 210, $cols[0]);
ImageString($c, 2, 135, 200, "KDE", $cols[0]);
# GNUStep
ImageFilledRectangle($c, 165, 203, 175, 210, $cols[5]);
www.ParsBook.org
masoudmanson | Php & GD
ImageRectangle($c, 165, 203, 175, 210, $cols[0]);
ImageString($c, 2, 180, 200, "GNUStep", $cols[0]);
# Copyright info
ImageStringUp($c, 1, 0, 145, "Copyright 2011 masoudmanson", $cols[0]);
# Generate image
ImageJPEG($c);
?>
:شیذز ثبال ؿوب سلیش صیش سا خایذ داؿزثؼذ اص اجشای اػک
ؿوب اگش اهب ؼشذ، دػششع دس ویـ )build-in bitmap fonts( ثیشی سکبس بی فز
سا لت کشد اص سبثغ freetype2 ی کشبثخب ثبیذ کیذ، اػشفبد دیگشی بی فز اص ثخایذ
imagefttext() ؿوب وچیي هی سایذ اص . ثشای وبیؾ هشي بیشبى اػشفبد کیذPost
Script Type 1 fonts ث کشبثخب ی یض اػشفبد کیذ ک دس ایي كسرt1lib یبص داسیذ
.اػشفبد کیذ ()imagepsloadfont() imagepstextدغ اص لت آى هی سایذ اص ساثغ
Type 1سج کیذ ک . ایي کشبثخب ب سا ػبدسر کذ php gdدس ش د هسد ثبال، ثبیذ
fonts صهبى ثیـششی سا ؼجز ثTrur Type fonts ى یبص داسذ، ایي اهذ ثشای سذس ؿذ
. ؿذى اػکشیذز ؿوب گشدد timeoutهوکي اػز ثبػث
www.ParsBook.org
masoudmanson | Php & GD
قبل از ایىک ضاکارتان را ب تماضاگر بفرستیذ -پىجم بخص
تصمیم بگیریذ چ وع تصیری می خایذ ایجاد کىیذ؟
WBMPیب PNGسا ایجبد کشد ایذ، اهب ؿبیذ ؿوب ثخایذ سلبیش jpegسب کى ؿوب سلبیش
ثشای ایي کبس . سلیذ کیذ (ثبؿذ کبسثشد داسد، هثل هثبیل ب WAP-enabeldدس ػبئلی ک )
اگش ایي کبس سا کشدیذ . ػم کیذ ()imagewbmpیب ()imagepngسا ثب ()imagejpegسبثغ
:کیذ ک سغییشار صیش سا یض اػوبل کیذ، یؼی فشاهؽ
header (“Content-Type: image/jpeg”);
سا ثب
header (“Content-Type: image/png”);
یب
header (“Content-Type: image/vnd.wap.wbmp”);
.جبثجب کیذ
htmlتعبی کردن در بیه کذ ای -ضطم بخص
سب کى ؿوب ثشای اػشفبد اص اػکشیذز بی ایي آهصؽ آب سا ث كسر هؼشقین فشاخای هی
کشدیذ، دس حبلی ک ایي هبػت سشیي سؽ ثشای دػششػی ث سلبیش سلیذی سػط اػکشیذز ب
اػشفبد کیذ، چ؟ htmlاگش ؿوب ثخایذ اص اػکشیذششبى دس یک كفح ی . یؼز
اػکشیذشی ک سلبیش سا URLسوبم کبسی ک ؿوب ثبیذ ثکیذ قشاس دادى . ایي کبس ثؼیبس ساحز اػز
:هی ثبؿذ <img>سگ ب ی srcهی ػبصد دس آسگهبى
www.ParsBook.org
masoudmanson | Php & GD
<html>
<head>
<title>GD Tutorial</title>
</head>
<body>
<img src="clock.php">
<img src="chart.php">
</body>
</html>
:ؿکل صیش خشجی کذ ثبال هی ثبؿذ
www.ParsBook.org
masoudmanson | Php & GD
About the author
Jacek Artymiak works as a freelance consultant, developer, and writer. Since 1991 he's been developing software for many commercial and free variants of the UNIX and BSD operating systems (AIX, HP-UX, IRIX, Solaris, Linux, FreeBSD, NetBSD, OpenBSD, and others), as well as for the MS-DOS, Microsoft Windows, Mac OS, and Mac OS X operating systems. Jacek specializes in business and financial application development, Web design, network security, computer graphics, animation, and multimedia. He's a prolific writer on technology subjects and the coauthor of Install, Configure, and CustomizeSlackware Linux (Prima Tech, 2000) and StarOffice for Linux Bible (IDG Books, 2000). Find many of Jacek's software projects at SourceForge.net.
About the interpreter Since 2009 I’m studing Information Technology in Institute for Advanced Studies in Basic Sciences (IASBS). E-mail : [email protected] E-mail (2) : [email protected] Cellular phone : 09148401824 Blog : iasbs-it.mihanblog.com
Masoud Amjadi
www.ParsBook.org
masoudmanson | Php & GD
References
1- Installation manuals for gd 1.8.x (http://www.boutell.com/gd/manual1.8.4.html) and gd2.x (http://www.boutell.com/gd/manual2.0.1.html).
2- Installation manual for Apache
(http://httpd.apache.org/docs/install.html). 3- Additional information for developers using PHP in Programming PHP , Rasmus Lerdorf
and Kevin Tatroe, O'Reilly and Associates, 2002 (http://www.oreilly.com/catalog/progphp/).
4- For programming Web applications with PHP, see Web Database Applications with PHP and MySQL , Hugh E. Williams and David Lane, O'Reilly and Associates, 2002 (http://www.oreilly.com/catalog/webdbapps/).
5- For a general discussion of information visualization, read the Edward Tufte trilogy at Graphics Press: The Visual Display of Quantitative Information, 2001; Envisioning Information, 1990; and Visual Explanations: Images and Quantities, Evidence and Narrative, 1997 (http://www.edwardtufte.com/1028032219/tufte/).
6- Apple offers instructions on adding PHP for Mac OS X (http://developer.apple.com/internet/macosx/php.html).
www.ParsBook.org