php-gd-[]

24
masoudmanson | Php & GD یا درتی پ گرافیک بیphp ازستفاد ا باGD ػطح: هقذهبسی ه ؤ لف: Jacek Artymiak شجن هش: د اهجذؼ هؼ ی بخص ايل- ضريع کىیذ قبل از ایىکزشرد ایه آم در مکی ثب گشافیبی بهي ثشؿش یبص ث سبىطس کبس یب دش اگش دphp سا داؿشذ، ایي ثبؿیذ ؿوباصؽ هی س آه اصیب ثب اػشفبدشی دش ثیییذ سلبل س سا دسphp ی کشبثخب gd ذبسی ک ی. ـبى دادى كب اگش اص آى ثشای اػز، هخلضاس کلو ش اصش ػکغ ث یکس هبلیجبسر، اه سد ؿلوی اػشفبدػبر ػ یب اط. یذ،ب ایجبد ک اػز دسخ ثجا ثب سیش سیذ سلبا ؿوب ثش اگشذب چ سبثیش آیش ثکـذ سلیش ثت سلبػبر سا دس قبلذ آخشیي اطا هی س دي ثشاثش هی ؿ ی. ذاف اشی ثبش ثیی ایجبد سلب سا ثشاییبی د اػکشیذزیذ ثاصؽ ؿوب قبدس خس دبیبى ایي آه دphp ی کشبثخب gd ؼیذی ث. ػلوی سا ، هبلیجبسیػبر س ساحشی اطؼز ثایذ سا ؿوب خی سل ث ش ثکـیذ. صیذش سا هی آهاسد صی ؿوب هیظ ث: ظین ػیؼشنل س اكgd www.ParsBook.org

Upload: farshid-farokh-nia

Post on 08-Mar-2016

230 views

Category:

Documents


10 download

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