5R]G]LDã*UDILNDZ3+3
103
52='=,$â
*UDILNDZ3+3
%\üPR*H]DVWDQDZLDV]VLF]\PUy*QLVLJUDILNDZ3+3RGJUDILNLZ]Z\Ná\P+70/-u.
7ZRU]FVWURQ\:::QDSHZQRRSDWU\ZDáHMHLOXVWUDFMDPLD]QDF]QLN
IMG
i jego atrybuty
]SHZQRFLQLHV&LREFH'RP\ODV]VLWDN*H*HXPLeszczenie znacznika
IMG
w danych
Z\SLV\ZDQ\FK SU]H] VNU\SW 3+3 ]DRZRFXMH LOXVWUDFM QD RGSRZLHGQLP PLHMVFX VWURQ\
:::3RFRZLFWHPDWRZLSRZLFDüFDá\UR]G]LDá"
2GSRZLHG(QLHMHVWVNRPSOLNRZDQD1LHEG]LHP\]DMPRZDüVLWXWDMVWDW\F]QJUDILNGo-
áF]DQGRGRNXPHQWyZ+70/]SOLNyZz ilustracjami. Natomiast omówimy w tym roz-
dziale dynamiczne
WZRU]HQLHLOXVWUDFMLSU]H]VNU\SWG]LDáDMF\QDVHUZerze.
àDWZRVLGRP\OLüMDNLHWRQLHVLH]DVREPR*OLZRFL%G]LHPR*QDLOXVWURZDüUy*QHLn-
formac
MHJUDILNDPLQDSRGVWDZLH]HEUDQ\FKGDQ\FK1LHWU]HEDZW\PFHOXWZRU]\üZLHOX
LOXVWUDFMLLZ\ELHUDüWDNLHMNWyUD&LRGSRZLDGD3RSURVWXXWZRU]\V]MVRELHDUDF]HMX*\t-
NRZQLNRZLZF]DVLHU]HF]\ZLVW\PF]\OLZWHG\JG\EG]LHSRWU]HEQD
Zacznijmy od p
RND]DQLD*HWRMHVWEDUG]RáDWZH3RPR*HQDPZW\PSRQL*V]HüZLF]HQLH
ýZLF]HQLH
8WZyU]SURJUDPNWyU\SU]\JRWXMHLZ\ZLHWOLLOXVWUDFMZIRUPDFLH-3*3RVWDUDMVLDE\
E\áDWRELDáDNUDWNDQDF]DUQ\PWOHRUR]PLDUDFK[
Nie bardzo wiado
PRMDNVL]DEUDüGRWDNLHJR]DGDQLDDW\PF]DVHPJG\]QDP\PHWRG
MHVWWREDUG]RáDWZH3U]\JRWRZDQLHLZ\ZLHWOHQLHLOXVWUDFMLRGE\ZDVLZNLONXHWDSDFK
1DOH*\Z\ZLHWOLüQDJáyZHNGRNXPHQWXZáDFLZ\GODIRUPDWXJUDILNL:SU]\SDGNXJUDIi-
ki JPG jest to:
Content-type: image/jpeg
Pomaga w tym funkcja
header
.
KHDGHU
3U]HV\áDQDJáyZHNRNUHORQ\MDNRSDUDPHWU
1DVWSQLHQDOH*\XWZRU]\üU\VXQHNX*\ZDMFIXQNFML
createimage
. Funkcja ta zwraca zmien-
QNWyUDMHVWMHJRLGHQW\ILNDWRUHP
3+3²þZLF]HQLDSUDNW\F]QH
104
LPDJHFUHDWH
Tworzy rysunek. Par
DPHWU\RNUHODMMHJRUR]PLDU
w
SLNVHODFKDIXQNFMD]ZUDFD]PLHQQEGFMHJR
identyfikatorem.
:VSyáU]GQHLOXVWUDFMLVOLF]RQHRGOHZHJRJyUQHJRURJX3LHUZV]DZVSyáU]GQDGRW\F]\
osi poziomej, a druga – pionowej.
Na tak utworzonej i
OXVWUDFML PR*HP\ GRNRQ\ZDü SU]HUy*Q\FK RSHUDFML : W\P üZLF]HQLX
X*\MHP\WU]HFKGHILQLRZDQLDNRORUyZZ\SHáQLHQLDNRORUHPRUD]U\VRZDQLDOLQLL
LPDJHFRORUDOORFDWH
Definiowanie koloru dla rysunku. Kolejnymi argumen-
WDPLV]PLHQQDEGFDLGHQW\ILNDWRUHPrysunku oraz
VNáDGRZHNRORUX5*L%RGGR)XQNFMD]ZUa-
ca identyfikator koloru.
LPDJHILOO
:\SHáQLHQLHU\VXQNXLGHQW\ILNDWRUMHVWSLHUZV]\P
DUJXPHQWHPNRORUHPVWDQRZLF\PF]ZDUW\DUJXPHQW
'UXJLLWU]HFLDUJXPHQWWRZVSyáU]GQHRGNWyU\FK
ro
]SRF]\QDVLZ\SHáQLDQLHREV]DUXMDNRREV]DUUR]u-
PLDQHVSLNVHOHMHGQHJRNRORUXDMDNLNROZLHNLQQ\
kolor stanowi brzeg).
LPDJHOLQH
W rysunku, którego identyfikator jest pierwszym argu-
PHQWHPU\VXMHOLQLRZVSyáU]GQ\FKSRF]WNXLNRFD
podanych w kolejnych czterech parametrach. Kolor linii
MHVWRNUHORQ\V]yVW\PSDUDPHWUHP
:\ZLHWOHQLHSU]\JRWRZDQHMLOXVWUDFMLZIRUPDFLH-3*MHVWUHDOL]RZDQHSU]H]IXQNFM
imagejpeg
.
,VWQLHMWDN*HIXQNFMHZ\ZLHWODMFHLOXVWUDFMHZLQQ\FKIRUPDWDFK3DPLWDM*HPXsisz za-
FKRZDü]JRGQRüZ\V\áDQHJRQDJáyZNDGRNXPHQWX]IRUPDWHPU\VXQNX
LPDJHMSJ
:\ZLHWOHQLHLOXVWUDFMLZIRUPDFLH-3*$UJXPHQW
funkcji jest identyfikatorem ilustracji.
LPDJHJLI
:\ZLHWOHQLHLOXVWUDFMLZIRUPDFLH*,)$UJXPHQW
funkcji jest identyfikatorem ilustracji.
LPDJHSQJ
:\ZLHWOHQLHLOXVWUDFMLZIRUPDFLH31*$UJXPHQW
funkcji jest identyfikatorem ilustracji.
&DáRüSURJUDPXSU]HGVWDZLDVLQDVWSXMFR
SKS
<?
3URJUDPWZRU]\LOXVWUDFM]ELDáNUDWNQDF]DUQ\PWOH
header("Content-type: image/jpeg");
$rysunek = imagecreate (100,100);
$kolorbialy = imagecolorallocate ($rysunek, 255, 255, 255);
$kolorczarny = imagecolorallocate ($rysunek, 0, 0, 0);
imagefill ($rysunek, 0, 0, $kolorczarny);
for ($i=1; $i<10; $i++) {
5R]G]LDã*UDILNDZ3+3
105
imageline ($rysunek, 10*$i, 0, 10*$i, 100, $kolorbialy);
imageline ($rysunek, 0, 10*$i, 100, 10*$i, $kolorbialy);
}
imagejpeg ($rysunek);
?>
(IHNWHPG]LDáDQLDMHVWU\VXQHNZIRUPDFLH-3*RZ\PLDUDFK[SU]HGVWDZLDMF\V]a-
FKRZQLF
5\VXQHN:\QLNG]LDáDQLDVNU\SWX– kratkowany JPG
-H*HOL Z SURJUDPLH SRSHáQLáH EáG QLH ]REDF]\V] LQIRUPDFML R W\P Z RNQLH SU]HJOGDUNL
ZV]DNQDJáyZHNNWyU\]RVWDáGRQLHMSRVáDQ\WRQDJáyZHNJUDILF]Q\DQLHWHNVWRZ\-e*e-
OLLOXVWUDFMDNWyUFKFHV]Z\ZLHWOLüQLHSRMDZLVLVSUZDG((UyGáRVWURQ\-H*HOLSURJUDP
Z\JHQHURZDáMDNLNRPXQLNDWREáG]LHWDPQDSHZQRJR]QDMG]LHV]
0R*QD]DGDüS\WDQLHGODF]HJRGRSURVWHJRGZXNRORURZHJRU\VXQNX]DVWRVRZDOLP\IRr-
PDW-3*DQLH*,)7HQGUXJL]DSHZQLáE\SUDZGRSRGREQLHPQLHMV]\SOLNLEUDNVWUDWSRd-
F]DVNRPSUHVML7RSUDZGD-HVWMHGQDNSHZLHQSUREOHP-H*HOLPDV]]DLQVWDORZDQ\SDNLHW
PHPTriad, prawdopod
REQLH QLH REVáXJXMH RQ IRUPDWX *,) 1LH ZLHU]\V]" =DPLH Z So-
SU]HGQLPüZLF]HQLXZLHUV]ZyZLHWODMF\QDJáyZHNQD
header("Content-type: image/gif");
RUD]]PLHSROHFHQLHZ\ZLHWOHQLDQD
imagegif ($rysunek);
-H*HOLLOXVWUDFMDQLHZ\ZLHWOLVLSRSUDZQLHVSUDZG((UyGáRVWURQ\DZV]\VWNRVWDQLHVLMa-
VQH7DZHUVMDELEOLRWHNL*'VáX*FHMGRPDQLSXORZDQLDU\VXQNDPLNWyUHMX*\ZDV]QLH
posiada ob
VáXJLIRUPDWX*,)
-H*HOLNRU]\VWDV]]SXEOLF]QHJRVHUZHUD:::]REVáXJ3+3SUDZGRSRGREQLHGRVWDZFD
XVáXJUR]ZL]DáWHQSUREOHP]D&LHELH-HOLMHGQDNZ\NRQXMHV]üZLF]HQLDQDZáDVQ\PVHr-
ZHU]HSRGNRQWUROV\VWHPX:LQGRZVSUDZGRSRGREQLHSRMDZLVLPDá\NáRSRW
*G\E\QLHGDáRVLWHJRSUREOHPXUR]ZL]DüE\áDE\WRWUDJHGLD)RUPDW31*QLHMHVWMHVz-
F]HZ\VWDUF]DMFo rozpowszechniony, a JPG posiada swoje ograniczenia. W niektórych sy-
WXDFMDFKWDNVLVNáDGDZSU]\SDGNXJHQHURZDQLDJUDILNLSRVWURQLHVHUZHUDG]LHMHVLWDN
QDMF]FLHMLVWQLHMHSRWU]HEDZ\NRU]\VWDQLDIRUPDWX*,)
3+3²þZLF]HQLDSUDNW\F]QH
106
1DV]F]FLHGDZQLHMELEOLRWHND*'obsáXJLZDáDIRUPDW*,):\VWDUF]\ZLFWZHUVMNWó-
U G\VSRQXMHV] ]DVWSLü RGSRZLHGQL 2GSRZLHGQL ZHUVM GOD :LQGRZV ]QDMG]LHV] SRG
adresem:
http://aki.a4.pl/ksiazki/cwphp4/php_gd_gif_404.zip
FLJQLW\ SOLN PXVLV] UR]SDNRZDü D QDVWSQLH SOLN php_gd.dll VNRSLRZDü GR NDWDORJX
php\extensions
VZRMHMLQVWDODFMLDZLF]DSHZQHGRc:\apache\php\extensions). Plik, który
PLDáHZW\PNDWDORJXGRWHMSRU\QDZV]HONLZ\SDGHNQDMSLHUZ]Drchiwizuj.
2GWHJRPRPHQWXSRZLQLHQHEH]SUREOHPXWZRU]\üLZ\ZLHWODüWDN*HLOXVWUDFMHZIRUPa-
FLH*,)6SUDZG]LP\F]\WDNVLVWDáRZQDVWSQ\PüZLF]HQLX
ýZLF]HQLH
8WZyU] SRGREQ V]DFKRZQLF MDN Z üZLF]HQLX *UDILN Z\ZLHWO Z IRUPDFLH *,F,
a
ND*GHSROHV]DFKRZQLF\Z\SHáQLMORVRZ\PNRORUHP
:SWOLGODND*GHJR]HSyOV]DFKRZQLF\EG]LHP\ORVRZDüNRORU-H*HOLFKFHP\E\
ZDUWRüND*GHM]HVNáDGRZ\FK]DZLHUDáDVLZSU]HG]LDOH
−
Z\ZRáDQLHIXQNFMLSRZLn-
QRPLHüQDVWSXMFSRVWDü
imagecolorallocate ($rysunek, rand()%256, rand()%256, rand()%256);
1LHQDOH*\]DSRPLQDüR]DLQLFMRZDQLXJHQHUDWRUDOLF]ESVHXGRORVRZ\FKIXQNFM
srand
.
SKS
<?
3URJUDPWZRU]\LOXVWUDFM]ELDáNUDWN.D*GHSROH
MHVWZ\SHáQLRQHORVRZ\PNRORUH
m.
header("Content-type: image/gif");
$rysunek = imagecreate (100,100);
$kolorbialy = imagecolorallocate ($rysunek, 255, 255, 255);
$kolorczarny = imagecolorallocate ($rysunek, 0, 0, 0);
imagefill ($rysunek, 0, 0, $kolorczarny);
for ($i=1; $i<10; $i++) {
imageline ($rysunek, 10*$i, 0, 10*$i, 100, $kolorbialy);
imageline ($rysunek, 0, 10*$i, 100, 10*$i, $kolorbialy);
}
srand(time());
for ($x=0; $x<10; $x++) {
for ($y=0; $y<10; $y++) {
$kolorlosowy = imagecolorallocate
($rysunek, rand()%256, rand()%256, rand()%256);
imagefill ($rysunek, 5+$x*10, 5+$y*10, $kolorlosowy);
}
}
imagegif ($rysunek);
?>
:\SHáQLHQLHND*GHJRSRODUHDOL]XMHP\IXQNFM
imagefill
.RORUMHVWRF]\ZLFLHW\PZ\EUa-
Q\PORVRZRZND*G\PSU]HELHJXSWOL-DNRPLHMVFHRGNWyUHJRQDOH*\UR]SRF]üZ\SHá
QLDQLH Z\ELHUDP\ OH*F\ PQLHM ZLFHM Z URGNX ND*GHJR ] SyO SXQNW R ZVSyáU]GQ\FK
(
5+$x*10, 5+$y*10
), gdzie
$x
i
$y
VRGSRZLHGQLPLQXPHUDPLZSLRQLHLSR]iomie danego pola
(liczonymi od 0).
5R]G]LDã*UDILNDZ3+3
107
(IHNWG]LDáDQLDSURJUDPXSU]HGVWDZLDSRQL*V]DLOXVWUDFMDNWyUD]SHZQRFLWUDFLQDHIHk-
WRZQRFL]SRZodu braku kolorów.
Rysunek 5.2. Szachow
QLFDZ\SHáQLRQDORVRZ\PLNRORUDPL
=DXZD**HZQDJáyZNX]RVWDáSRGDQ\RGSRZLHGQLW\SSOLNX
header("Content-type: image/gif");
LZ\NRU]\VWDQRZáDFLZIXQNFMZ\ZLHWOHQLDLOXVWUDFML
imagegif
).
7ZRU]F ZáDVQH JUDILNL SU]\ SRPRF\ PRGXáX *' PR*HV] NRQWURORZDü NRORU ND*GHJR
pikse
OD SDPLWDMF R RJUDQLF]HQLDFK ND*GHJR ] IRUPDWyZ JUDILF]Q\FK 6SUyEXMHP\ WHJR
do
NRQDüZQDVWSQ\PüZLF]HQLX
ýZLF]HQLH
Napisz program, który w rysunku w formacie GIF o wymiarach 100x100 wylosuje i zakolo-
ruje 300 punktów
F]HUZRQ\FK L F]DUQ\FK SXQNW\ Z NROHMQ\FK ORVRZDQLDFK PRJ VL
SRZWDU]Dü
:\NRU]\VWDP\IXQNFMNWyUDRNUHODNRORUSRMHG\QF]HJRSLNVHOD
LPDJHVHWSL[HO
'ODU\VXQNXRNUHORQHJRSU]H]SLHUZV]\DUJXPHQW
GHILQLXMHNRORUSLNVHODRZVSyáU]GQ\FKSRGDQ\FK przez
GUXJLLWU]HFLDUJXPHQW&]ZDUW\DUJXPHQWRNUHODNRORU
1LHPXVLP\PDUWZLüVLRSRZWyU]HQLDZ\ORVRZDQ\FKSXQNWyZ:]ZL]NX]W\PZSWOL
ORVXMHP\ZVSyáU]GQHF]HUZRQHJRLF]DUQHJRSXQNWX
SKS
<?
// Program losuje 300 punktów czerwonych i czarnych i zaznacza je.
header("Content-type: image/gif");
$rysunek = imagecreate (100,100);
$kolorbialy = imagecolorallocate ($rysunek, 255, 255, 255);
$kolorczerwony = imagecolorallocate ($rysunek, 255, 0, 0);
$kolorczarny = imagecolorallocate ($rysunek, 0, 0, 0);
3+3²þZLF]HQLDSUDNW\F]QH
108
imagefill ($rysunek, 0, 0, $kolorbialy);
srand(time());
for ($i=1; $i<=300; $i++) {
imagesetpixel ($rysunek, rand()%100-1, rand()%100-1, $kolorczerwony);
imagesetpixel ($rysunek, rand()%100-1, rand()%100-1, $kolorczarny);
}
imagegif ($rysunek);
?>
']LDáDQLHSURJUDPXSRND]XMHSRQL*V]DLOXVWUDFMDFKRüWUXGQREG]LHGRVWU]HFUy*QLFSo-
PLG]\F]HUZRQ\PLLF]DUQ\PLSXQNWDPL
Rysunek 5.3. Losowe czerwone i czarne piksele
,VWQLHMHZLHOHIXQNFMLNWyUHPRG\ILNXMU\VXQNL:DUWR]DSR]QDüVL]QLHNWyU\PL]QLFK
ýZLF]HQLH
1DSLV]SURJUDPNWyU\ZU\VXQNXZIRUPDFLH*,)RZ\PLDUDFK[QDU\VXMHSLüRNU
JyZF]HUZRQ\FKLSLüF]DUQ\FKZORVRZ\FKPLHMVFDFK
1LH PD IXQNFML U\VXMFHM RNUJ DOH VNRU]\VWDP\ ] EDUG]iej ogólnej, która rysuje wycinek
elipsy.
LPDJHDUF
5\VXMHZ\FLQHNHOLSV\.ROHMQ\PLDUJXPHQWDPLV
LGHQW\ILNDWRUU\VXQNXZVSyáU]GQD[URGNDáXNX
ZVSyáU]GQD\URGNDáXNXV]HURNRüáXNXZ\VRNRü
áXNXNWSRF]WNXNWNRFDNRORU
-H*HOLZZ\ZRáDQLXIXQNFMLV]HURNRüLZ\VRNRüEGVRELHUyZQHDáXNEG]LHSHáHQRG
0
GRVWRSQLWRU\VRZDQ\áXNRND*HVLRNUJLHP
SKS
<?
3URJUDPWZRU]\LOXVWUDFM]SLFLRPDF]HUZRQ\PLLSLFLRPD
F]DUQ\PLRNUJDPL
header("Content-type: image/gif");
$rysunek = imagecreate (100,100);
5R]G]LDã*UDILNDZ3+3
109
$kolorbialy = imagecolorallocate ($rysunek, 255, 255, 255);
$kolorczerwony = imagecolorallocate ($rysunek, 255, 0, 0);
$kolorczarny = imagecolorallocate ($rysunek, 0, 0, 0);
imagefill ($rysunek, 0, 0, $kolorbialy);
srand(time());
for ($i=1; $i<=5; $i++) {
imagearc ($rysunek, rand()%100-1, rand()%100-1,
20, 20, 0, 360, $kolorczerwony);
imagearc ($rysunek, rand()%100-1, rand()%100-1,
20, 20, 0, 360, $kolorczarny);
}
imagegif ($rysunek);
?>
5\VXQHN/RVRZHRNUJL
'R U\VXQNX PR*QD GRáF]Dü LQQH DOER WDNLH NWyUH V GRVWSQH DOER WZRU]RQH Z F]DVLH
G]LDáDQLDVNU\SWX
ýZLF]HQLH
1DSLV]SURJUDPNWyU\Z\ZLHWOLIRUPXODU]SR]ZDODMF\ZSLVDüOLF]E3RMHMZSLVDQLXZy-
ZLHWOLJUDILF]QSUH]HQWDFMZSLVDQHMOLF]E\
/LF]EEG]LHP\NRQVWUXRZDü]SRV]F]HJyOQ\FKF\IU:NDWDORJXcyfrySU]\NáDGyZ]QDj-
dziesz wszystkie cyfry w formacie GIF o rozmiarze 15x20 pikseli.
Wykorzystamy trzy nowe funkcje.
LPDJHFUHDWHIURPJLI
7ZRU]\U\VXQHNQDSRGVWDZLHMX*LVWQLHMFHJR$UJu-
mentem jest nazwa pliku. Funkcja zwraca identyfikator
utworzonego rysunku.
LPDJHFRS\UHVL]HG
.RSLXMHGRU\VXQNXRNUHORQHJRSU]H]SLHUZV]\DUJu-
ment inny –
RNUHORQ\SU]H]GUXJL1DVWSQe argumenty
RNUHODMZVSyáU]GQHx i yPLHMVFDZNWyU\PQDOH*\
U\VXQHNXPLHFLüZVSyáU]GQHx i y oraz rozmiar dx i dy
ZU\VXQNXGRFHORZ\PLZLHONRüddx i ddy w rysunku
(UyGáRZHJRSR]ZDODMFHQDSU]eskalowanie).
3+3²þZLF]HQLDSUDNW\F]QH
110
LPDJHGHVWUR\
Likwiduje identyfikator
U\VXQNXMHGQRF]HQLH]ZDOQLa-
MFSDPLü]QLP]ZL]DQ
SKS
<?
3URJUDPZ\ZLHWODIRUPXODU]SR]ZDODMF\ZSLVDüOLF]E-H*HOLOLF]ED
MHVWZSLVDQDZ\ZLHWODMZSRVWDFLJUDILF]QHM
function printliczba ($numer) {
IXQNFMDZ\ZLHWODOLF]EZSRVWDFLJUDILNLNRU]\VWDMF]JUDILN
- cyfr,
// zawartych w katalogu cyfry.
$liczbacyfr=1; $l = $numer;
while ($l >= 10) {
$liczbacyfr++;
$l=floor($l/10);
}
header("Content-type: image/gif");
$rysunek = imagecreate (15*$liczbacyfr,20);
for ($i=$liczbacyfr; $i>=1; $i--) {
$cyfra = floor($numer/pow(10,$i-1));
$numer = $numer % pow(10,$i-1);
$rysunekcyfra = imagecreatefromgif ("cyfry/$cyfra.gif");
imagecopyresized
($rysunek,$rysunekcyfra,($liczbacyfr-$i)*15,0,0,0,15,20,15,20);
imagedestroy ($rysunekcyfra);
}
imagegif ($rysunek);
}
LIOLF]ED!^MHVWZSLVDQDMDNDZDUWRüZIRUPXODU]X
printliczba ($liczba);
`HOVH^QLHPDZSLVDQ\FKGDQ\FKZ\ZLHWODP\IRUPXODU]
print '<HTML>';
print ' <HEAD>';
print ' <META HTTP-EQUIV="Content-Type" CONTENT="text/html; ';
print ' charset=iso-8859-2">';
print ' <TITLE>Liczba graficznie</TITLE>';
print ' </HEAD>/n';
print ' <BODY>/n';
print ' <FORM ACTION="5-05.php" METHOD=GET>/n';
print ' <INPUT TYPE="text" NAME="liczba">/n';
print '
,13877<3( VXEPLW9$/8( :\OLM!Q
print ' </FORM>/n';
print ' </BODY>/n';
print '</HTML>/n';
}
?>
.OXF]RZURORGJU\ZDRF]\ZLFLHIXQNFMD
printliczba
Z\ZLHWODMFJUDILF]QSUH]HQWDFM
liczby, która jest jej parametrem. Warto za
SR]QDüVL]MHMG]LDáDQLHP
1DSRF]WNXIXQNFMDRNUHODOLF]EF\IUOLF]E\&]\QLWRSRSU]H]]OLF]DQLHLOHUD]PR*QDM
FDáNRZLFLH SRG]LHOLü SU]H] :\NRU]\VWDQD IXQNFMD
floor
SRGDMH FDáNRZLW F]ü OLF]E\
VWDQRZLFHMMHMSDUDPHWU
1DVWSQLHWZRU]\P\LOXVWUDFMRRGSRZLHGQLPUR]PLDU]H.D*GDF\IUDPDUR]PLDU\[
ZLF]QDMFOLF]EF\IUWZRU]\P\U\VXQHNRUR]PLDUDFK
15*$liczbacyfr x 20
.
5R]G]LDã*UDILNDZ3+3
111
'DOHMZSWOLGODND*GHMF\IU\QDV]HMOLF]E\SU]HSURZDG]DP\SHZQRSHUDFM=ZUyüXZDJ
MDNRNUHODP\NROHMQF\IUOLF]E\
$cyfra = floor($numer/pow(10,$i-1));
$numer = $numer % pow(10,$i-1);
3LHUZV]F\IUOLF]E\RNUHODP\G]LHOFMFDáNRZLFLHSU]H]OLF]ENWyUDRNUHODMHMU]G
QDMZLNV]SRWJOLF]E\PQLHMV]RGQLHM'RGDOV]\FKG]LDáDRGFLQDP\So prostu
SLHUZV]F\IU
:DUWR ]DXZD*\ü *H Z SWOL SRMDZLD VL LQQD ]PLHQQD LGHQW\ILNXMFD U\VXQHN
$rysunekcyfra
.
:\QLNDWR]IDNWX*HDE\VNRSLRZDüMHGQLOXVWUDFMGRGUXJLHMPXVLV]RNUHOLüREDU\VXnki.
3R XPLHV]F]HQLX LOXVWUDFML ZH ZáDFLZ\P PLHMVFX Z GRFHORZHM JUDILFH ZDUWR M XVXQü
z
SDPLFLIXQNFM
imagedestroy
PLPR*HZW\PSU]\SDGNXSURJUDPG]LDáDáE\WDNVDPREH]
tej funkcji).
Rysunek 5.5.
/LF]EDZ\ZLHWORQDJUDILF]QLH
Do graficznej prezentacji danych nieoceniona jest funkcja, kt
yUDU\VXMHZ\SHáQLRQ\SURVWoNW
LPDJHILOOHGUHFWDQJOH
5\VXMHZ\SHáQLRQ\SURVWRNW$UJXPHQWDPLVLGHQWy-
ILNDWRUU\VXQNXZVSyáU]GQH[L\OHZHJRJyUQHJRURJX
ZVSyáU]GQH[L\SUDZHJRGROQHJRURJXRUD]NRORU
ýZLF]HQLH
Napisz skrypt, który
Z\SHáQLWDEOLFG]LHVLFLRPDORVRZ\PLOLF]EDPL]]DNUHVX
−
1DVWp-
QLH]LOXVWUXMZ\ORVRZDQHZDUWRFLQDZ\NUHVLHVáXSNRZ\P
SKS
<?
3URJUDPWZRU]\Z\NUHVVáXSNRZ\QDSRGVWDZLHG]LHZLFLRHOHPHQWRZHM
WDEOLF\]DSHáQLRQHMORVRZ\PLZDUWRFLDPL
Wykres jest podpisany.
srand(time());
for ($i=0; $i<10; $i++) { $liczby[$i] = rand()%10; }
header("Content-type: image/gif");
$rysunek = imagecreate (100,100);
$kolorbialy = imagecolorallocate ($rysunek, 255, 255, 255);
3+3²þZLF]HQLDSUDNW\F]QH
112
$kolorczarny = imagecolorallocate ($rysunek, 0, 0, 0);
imagefill ($rysunek, 0, 0, $kolorbialy);
for ($i=0; $i<10; $i++) {
$kolorslupka = imagecolorallocate ($rysunek, 25*$i, 25*$i, 0);
imagefilledrectangle
($rysunek, $i*10+3, 90-$liczby[$i]*10, $i*10+7, 90, $kolorslupka);
imagestring ($rysunek, 1, 3+$i*10, 91, $i, $kolorczarny);
}
imagegif ($rysunek);
?>
W p
WOL GOD ND*GHJR HOHPHQWX WDEOLF\ RNUHODP\ NRORU VáXSND VSU\WQLH ]PLHQLDMF GZLH
VNáDGRZHNRORUXSRZRGXMHP\*HNRORUEG]LHVL]PLHQLDáRGF]DUQHJRGR*yáWHJR
1DVWSQLHU\VXMHP\VáXSHN:VSyáU]GQ
x
OHZHJRJyUQHJRURJXRNUHODP\Z]DOH*QRFLRG
w
DUWRFLRGSRZLHGQLHMNRPyUNLWDEOLF\']LNLWHPXVáXSHNEG]LHPLDáZ\VRNRüX]DOH*
QLRQRGWHMZDUWRFL
2SUyF]WHJRND*G\]HVáXSNyZQXPHUXMHP\%LEOLRWHND*'SR]ZDODQDGRGDQLHWHNVWXGRXWZo-
U]RQHMJUDILNLZDUWRZLFVNRU]\VWDü]WHMPR*OLZRFL3RPRFQDRND*HVLIXQNFMD
imagestring
.
LPDJHVWULQJ
Umieszcza tekst na rysunku. Identyfikator tekstu jest
SLHUZV]\PDUJXPHQWHP1DVWSQHWRQXPHUF]FLRQNL
ZVSyáU]GQH[L\RGNWyU\FKUR]SRF]\QDVLSLVDQLH
tekst do wypisania i jego kolor.
3RQL*V]DLOXVWUDFMDSRND]XMHG]LDáDQLHSURJUDPX
5\VXQHN3UH]HQWDFMDGDQ\FKZSRVWDFLZ\NUHVXVáXSNRZHJR
0R*HV]Z\NRU]\VWDüFHFKIRUPDWX*,)LVWZRU]\üREUD]HN]SU]HSORWHPDQJinterleaced).
6SRZRGXMHWR*HEG]LHRQZ\ZLHWODQ\X*\WNRZQLNRZL]HVWRSQLRZRURVQFUR]G]LHOF]o-
FL1DSRF]WNXX*\WNRZQLN]REDF]\U\VXQHNUR]PD]DQ\DZPLDUZF]\W\ZDQLDEG]LH
VWDZDáDVLFRUD]EDUG]LHMZ\UD(QD']LNLWHPXX*\WNRZQLNPQLHMVLEG]LHQLHFLHUSOLZLá
podczas wczytywania rysunku.
Stosowanie przeplotu ma sens szcze
JyOQLH Z SU]\SDGNX LOXVWUDFML R GX*\FK UR]PLDUDFK
:WHG\X*\WNRZQLNQDSHZQRWRGRFHQL
5R]G]LDã*UDILNDZ3+3
113
ýZLF]HQLH
1DSLV]VNU\SWNWyU\XWZRU]\GX*LOXVWUDFMRUR]PLDUDFK[=DSHáQLMMZLHORPD
Uy*QRNRORURZ\PL NZDGUDWDPL 1DU\VXM WH* OLQL L Z\SLV] MDNL WHNVW :\ZLHWO LOXVWUDFM
z przeplotem.
=DZ\ZLHWODQLHLOXVWUDFML]SU]HSORWHPMHVWRGSRZLHG]LDOQDIXQNFMD
imageinterlace
.
LPDJHLQWHUODFH
:VND]XMHF]\U\VXQHNRNUHORQ\SLHUZV]\PSDUDPe-
WUHPPDE\üZ\ZLHWORQ\]SU]HSORWHP-H*HOLWDNGUXJL
argument p
RZLQLHQPLHüZDUWRü758(
SKS
<?
3URJUDPZ\ZLHWODXWZRU]RQSU]H]VLHELHLOXVWUDFM]SU]HSORWHP
srand(time());
header("Content-type: image/gif");
$rysunek = imagecreate (800,600);
$kolorbialy = imagecolorallocate ($rysunek, 255, 255, 255);
$kolorczarny = imagecolorallocate ($rysunek, 0, 0, 0);
imagefill ($rysunek, 0, 0, $kolorbialy);
for ($i=0; $i<250; $i++) {
$kolorprostokata = imagecolorallocate ($rysunek, rand()%256,
rand()%256, rand()%256);
imagefilledrectangle ($rysunek, rand()%800, rand()%600, rand()%800,
rand()%600, $kolorprostokata);
}
imagestring ($rysunek, 4, 310, 91, "To jest napis", $kolorczarny);
imageline ($rysunek, 0, 0, 800, 600, $kolorczarny);
imageinterlace ($rysunek, TRUE);
imagegif ($rysunek);
?>
&HORZR XWZRU]\OLP\ WDN GX*\ U\VXQHN DE\ HIHNW E\á ZLGRF]Q\ QDZHW MH*HOL NRU]\VWDV]
z
VHUZHUD:::QDZáDVQ\PNRPSXWHU]HG]LNLF]HPXX]\VNXMHV]Eá\VNDZLF]Q\WUDQVIHU
Podczas wczytywania ilu
VWUDFML SU]HSORW PR*QD ]DXZD*\ü ]ZáDV]F]D QD QDU\VRZDQHM OLQLL
i
QDWHNFLH-HGQDNFDáNLHPGREU]HEG]LHRQZLGRF]Q\GODND*GHJRNWREG]LHFLJDáJUa-
fi
NSU]H],QWHUQHW
1LH]Z\NOHSU]\GDWQFHFKIRUPDWX*,)MHVWWR*HSHZQHMHJRIUDJPHQW\PR*QDXF]\QLü
SU]H]URF]\VW\PL ']LNL WHPX LVWQLHMH PR*OLZRü ]DPLHV]F]HQLD QD VWURQLH U\VXQNX NWyU\
VSUDZLDZUD*HQLHMDNE\SRVLDGDáNV]WDáWLQQ\QL*SURVWRNWQ\
%LEOLRWHND*'SR]ZDODZSURZDG]LüSU]H]URF]\VWRüZU\VXQNXZEDUG]RáDWZ\VSRVyE:\VWDr-
czy zdefini
RZDüMHGHQ]NRORUyZMDNRSU]H]URF]\VW\–]DSRPRFIXQNFML
imagecolortransparent
.
LPDJHFRORUWUDQVSDUHQW
'ODU\VXQNXRNUHORQHJRSLHUZV]\PDUJXPHQWHP
XVWDODNRORUNWyU\EG]LHSU]H]URF]\VW\VWDQRZLRQ
drugi argument).
3+3²þZLF]HQLDSUDNW\F]QH
114
ýZLF]HQLH
Napisz skrypt,
NWyU\XWZRU]\LOXVWUDFM]F]HUZRQ\PNyáNLHPQDELDá\PWOH6SUDZE\ELDá\
NRORUE\áRSU]H]URF]\VW\:\ZLHWOLOXVWUDFMQDVWURQLH+70/NWyUDSRVLDGDWáRLQQHJRQL*
ELDá\NRORUX
SKS
<?
:\ZLHWODF]HUZRQHNyáNRQDSU]H]URF]\VW\PWOH
header("Content-type: image/gif");
$rysunek = imagecreate (200,200);
$kolorbialy = imagecolorallocate ($rysunek, 255, 255, 255);
$kolorczerwony = imagecolorallocate ($rysunek, 255, 0, 0);
imagefill ($rysunek, 0, 0, $kolorbialy);
imagearc ($rysunek, 100, 100, 70, 70, 0, 360, $kolorczerwony);
imagefill ($rysunek, 100, 100, $kolorczerwony);
imagecolortransparent ($rysunek, $kolorbialy);
imagegif ($rysunek);
?>
Skrypt
XWZRU]\F]HUZRQHNyáNRQDELDá\PWOH1LH]DXZD*\P\SU]H]URF]\VWRFLXUXFKamia-
MF JR :\NRU]\VWDMP\ MHGQDN Z\QLN G]LDáDQLD VNU\SWX Z\ZLHWODMF JR QD V]DU\P WOH
w dokumencie HTML.
KWP
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-2">
7,7/(!5\VXQHN]SU]H]URF]\VW\PWáHP7,7/(!
</HEAD>
<BODY BGCOLOR="#AAAAAA">
<IMG SRC="5-08.php">
</BODY>
</HTML>
0R*QD]DXZD*\ü*HGRXWZRU]RQHM]DSRPRFVNU\SWX3+3LOXVWUDFMLRGZRáXMHP\VLSo-
dobnie, jak do
]Z\NáHMLOXVWUDFML
:\QLNLHPMHVWF]HUZRQHNyáNRQDV]DU\PWOHFRZLDGF]\RW\P*HXWZRU]RQ\SU]H]VNU\SW
U\VXQHNPDSU]H]URF]\VWHWáR
%DUG]RFHQQPR*OLZRFLRIHURZDQSU]H]ELEOLRWHNMHVWRGF]\WDQLHUR]PLDUyZU\VXQNX
0R*HWRVLSU]\GDüQDSU]\NáDGSU]\SLVDQLXVNU\SWXDXWRPDW\F]QLHREVáXJXMFHJRJDOHUL
]GMü]NWyU\FKND*GHPR*HE\üLQQHMZLHONRFL
5R]G]LDã*UDILNDZ3+3
115
ýZLF]HQLH
'ODLVWQLHMFHJRU\VXQNXZ\ZLHWOJRZGRNXPHQFLH+70/DXWRPDW\F]QLHRNUHODMFMHJR
V]HURNRüLZ\VRNRüDWDN*HQDGDMFatrybuty WIDTH i HEIGHT.
5R]PLDUU\VXQNXPR*QDRNUHOLüQDGZDVSRVRE\3LHUZV]\]QLFKZ\PDJDQDMSLHUZSo-
ZRáDQLD RNUHODMFHM JR ]PLHQQHM 7ZRU]F QRZ LOXVWUDFM SRVáXJLZDOLP\ VL IXQNFM
createimage
:SU]\SDGNXU\VXQNXMX*LVWQLHMFHJRQDOH*\]DVWRVRZDüIXQNFM
createimage-
fromgif.
FUHDWHLPDJHIURPJLI
)XQNFMD]ZUDFD]PLHQQRNUHODMF– rysunek zawarty
w pliku, którego nazwa stanowi argument funkcji.
:LHONRüLOXVWUDFMLRNUHODVLSU]\X*\FLXGZyFKIXQNFML
LPDJHVL]H[
)XQNFMD]ZUDFDV]HURNRüU\VXQNXRNUHORQHJRSU]H]
identyfikator – parametr.
LPDJHVL]H\
)XQNFMD]ZUDFDZ\VRNRüU\VXQNXRNUHORQHJRSU]H]
identyfikator – parametr.
,QQPHWRGMHVWZ\NRU]\VWDQLHEDUG]RSR*\WHF]QHMIXQNFML
getimagesize
.
JHWLPDJHVL]H
)XQNFMD]ZUDFDWDEOLF]DZLHUDMFF]WHU\SRODV]HUo-
NRüU\VXQNXMHJRZ\VRNRüW\SRUD]áDFXFK]QDNyZ
do wykorzystania w znaczniku IMG.
:SU]\NáDG]LHVWRVXMHP\RELHPHWRG\
SKS
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-2">
<TITLE>Odczytanie rozmiaru ilustracji</TITLE>
</HEAD>
<BODY>
"$SOLNDFMDGDMHQDPPR*OLZRüRGF]\WXNDVRZDQLDGRGDZDQLD
// i poprawy danych w bazie.
$nazwarysunku = "bannery/1.gif";
$rysunek = imagecreatefromgif ($nazwarysunku);
SULQW6]HURNRüU\VXQNX%!LPDJHV[U\VXQHN
SULQW%!Z\VRNRüU\VXQNX%!LPDJHV\U\VXQHN%!%5!
$wh = getimagesize ($nazwarysunku);
print "<IMG SRC=\"$nazwarysunku\" $wh[3]>";
?>
</BODY>
</HTML>
6NU\SWZ\SLVXMHNRGZ\ZLHWODMF\U\VXQHN]DSRPRF]QDF]QLND
<IMG>
:DUWRFLDWUybu-
tów
WIDTH
i
HEIGHT
GODyZF]HQLHRGF]\WDQHJRU\VXQNXVRNUHODQHRGSRZLHGQLPLIXQk-
3+3²þZLF]HQLDSUDNW\F]QH
116
FMDPL : QDV]\P SU]\SDGNX SRVáXJXMHP\ VL EDQQHUHP NWyU\ ]QDMGXMH VL Z SOLNX
z pr
]\Náadami.
:\ZLHWODP\WH*WHNVWRZLQIRUPDFMRV]HURNRFLLZ\VRNRFLU\VXQNX
3+3GDMHPR*OLZRüSU]HVNDORZDQLDU\VXQNXRGSRZLDGD]DWRSR]QDQDMX*IXQNFMD
imgcopy-
fromgif
1DOH*\MHGQDN]GDZDüVRELHVSUDZ*HMDNRüWHJRSU]HVNDORZDQLDMHVWQL*V]DQL*
JG\E\ ]RVWDáR GRNRQDQH ]D SRPRF GREUHJR SURJUDPX JUDILF]QHJR %\ü PR*H FKFLDáE\
Z\NRU]\VW\ZDüZVZRLPVHUZLVLHMHGQLOXVWUDFMZNLONXUy*Q\FKUR]PLDUDFKLPDV]]a-
PLDUSU]HFKRZ\ZDüQDVHUZHU]HW\ONRQDMZLNV]DPQLHMV]HWZRU]\üSU]\X*\FLXVNU\SWu
3+3:DUWRVL]DVWDQRZLüF]\QLHOHSLHM]DPLHFLüMMHGQDNQDVHUZHU]HZND*GHM]So-
WU]HEQ\FK ZLHONRFL SR SU]HNV]WDáFHQLX ]D SRPRF SURJUDPX JUDILF]QHJR =DSHZQL WR
]QDF]QLHZ\*V]MDNRüLOXVWUaFMLSU]\VSLHV]\Z\ZLHWODQLHLRGFL*\VHUZHU
ýZLF]HQLH
1DSLV]VNU\SWNWyU\SU]HVNDORZXMHLOXVWUDFM3RUyZQDMMDNRüWDNLHMLOXVWUDFML]SU]HVNDOo-
ZDQ]DSRPoFSURJUDPXJUDILF]QHJR
6SUyEXMHP\]PLHQLüUR]PLDUMHGQHM]RNáDGHNNVL*HN2U\JLQDá]QDMGXMHVLZNDWDORJXimg
SU]\NáDGyZ 7DP WDN*H RGQDMG]LHV] LOXVWUDFM ]PQLHMV]RQ ]D SRPRF SURJUDPX &RUHO
PHOTO-PAINT.
3RQL*V]\VNU\SWRGF]\WXMHMX*LVWQLHMFLOXVWUDFMLNRSLXMHMGRWHMQRZRXWZRU]RQHMSR
pomniejszeniu).
SKS
<?
3URJUDPSU]HVNDORZXMHLOXVWUDFM][QD[
.
header("Content-type: image/gif");
$rysunek = imagecreate (72,93);
$rysunekprzeksztalcany = imagecreatefromgif ("img/ph6bib.gif");
imagecopyresized
($rysunek,$rysunekprzeksztalcany,0,0,0,0,72,93,181,236);
imagedestroy ($rysunekprzeksztalcany);
imagegif ($rysunek);
?>
8WZRU]\P\ WDN*H GRNXPHQW +70/ NWyU\ Z\ZLHWOL ZV]\VWNLH LOXVWUDFMH Z\MFLRZ So-
PQLHMV]RQ]DSRPRF3+3LSU]\]DVWRVRZDQLXSURJUDPX&RUHO3+272-PAINT.
KWP
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-2">
<TITLE>Rysunek przeskalowany przez PHP i programem CorelDraw</TITLE>
</HEAD>
<BODY BGCOLOR="#AAAAAA">
<TABLE>
<TR><TD COLSPAN=2 ALIGN=CENTER><IMG SRC="img/ph6bib.gif"></TD></TR>
<TR><TD COLSPAN=2 ALIGN=CENTER>Rysunek oryginalny<P></TD></TR>
<TR><TD ALIGN=CENTER><IMG SRC="5-10.php"></TD>
<TD ALIGN=CENTER><IMG SRC="img/ph6bib-corel.gif"></TD></TR>
<TR><TD ALIGN=CENTER>PHP</TD><TD ALIGN=CENTER>Corel</TD></TR>
5R]G]LDã*UDILNDZ3+3
117
</TABLE>
</BODY>
</HTML>
1LHWUXGQR]DXZD*\ü*HMDNRüSUDZHMLOXVWUDFMLMHVW]QDF]QLHOHSV]DQL*OHZHM
1LH]QDF]\WR*HZRJyOHQLHSRZLQQRVL]PLHQLDüUR]PLDUyZ]DSRPRF3+3:DUWRMHd-
QDNSRGFKRG]LüGRWHJREDUG]RUR]ZD*QLH
Funkcja
imagegif
DWDN*H
imagejpg
) zapewnia je
V]F]HMHGQFLHNDZPR*OLZRü5\VXQHN–
]DPLDVW]RVWDüZ\ZLHWORQ\–PR*H]RVWDü]DSLVDQ\ZRGSRZLHGQLPIRUPDFLH:\VWDUF]\
SRGDüPXGUXJLGRNXPHQW–QD]ZSOLNX
ýZLF]HQLH
:\NRU]\VWDMSURJUDP]üZLF]HQLDL]DSLV]XWZRU]RQ\SU]H]QLHJRZ\NUHs w pliku teksto-
wym.
:\NRU]\VWDP\PR*OLZRüMDNGDMHQDPIXQNFMD
imagegif
.
SKS
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-2">
<TITLE>Zapis rysunku do pliku</TITLE>
</HEAD>
<BODY>
<?
// P
URJUDPWZRU]\Z\NUHVVáXSNRZ\QDSRGVWDZLHG]LHZLFLRHOHPHQWRZHM
WDEOLF\]DSHáQLRQHMORVRZ\PLZDUWRFLDPL:\NUHVMHVWSRGSLVDQ\
// Utworzona ilustracja zostaje zapisana do pliku rys.gif.
srand(time());
for ($i=0; $i<10; $i++) {
$liczby[$i] = rand()%10;
}
$rysunek = imagecreate (100,100);
$kolorbialy = imagecolorallocate ($rysunek, 255, 255, 255);
$kolorczarny = imagecolorallocate ($rysunek, 0, 0, 0);
imagefill ($rysunek, 0, 0, $kolorbialy);
for ($i=0; $i<10; $i++) {
$kolorslupka = imagecolorallocate ($rysunek, 25*$i, 25*$i, 0);
imagefilledrectangle
($rysunek, $i*10+3, 90-$liczby[$i]*10, $i*10+7, 90, $kolorslupka);
imagestring ($rysunek, 1, 3+$i*10, 91, $i, $kolorczarny);
}
imagegif ($rysunek, 'img/rys.gif');
?>
3!5\VXQHN]RVWDá]DSLVDQ\GRSOLNX3!
</BODY>
</HTML>
3+3²þZLF]HQLDSUDNW\F]QH
118
:SU]\SDGNXJG\VHUZHUG]LDáDZURGRZLVNX:LQGRZVQLHSRMDZLVL*DGQHSUREOHP\
6SUDZG(XWZRU]RQ\SOLNZF]\WDMJRGRSURJUDPXJUDILF]QHJRE\]REDF]\ü*HMHVWWRU]e-
F]\ZLFLHLOXVWUDFMD
-H*HOL VHUZHU G]LDáD Z V\VWHPLH /LQX[ PXVLV] SDPLWDü *H tworzenie pliku graficznego
ZL*H VL ] LGHQW\F]Q\PL ]DVWU]H*HQLDPL MDN w przypadku innych =RVWDáR WR Z\MDQLRQH
w rozdziale 4. Katalog, w którym tworzysz plik,
PXVLSRVLDGDüRGSRZLHGQLHSUDZD– do za-
pisu, d
ODWHJRGREU]HMHVWXWZRU]\üGRSU]HFKRZ\ZDQLDLQQ\ katalogQL*WHQZNWyU\PSU]e-
chowujesz dokumenty PHP.
5\VXQNLWZRU]RQHSRVWURQLHVHUZHUDPRJE\üEDUG]RFHQQ\PVSRVREHPSUH]HQWDFMLUy*Qe-
go rodzaju dynamiczn
\FKGDQ\FKQDVWURQLH0XVLV]MHGQDNSDPLWDü*HLFKWZRU]HQLHRb-
FL*DVHUZHU, dODWHJRSRZLQLHQHUR]ZD*\üMDNF]VWRGDQHXOHJDM]PLDQLH-H*HOLQDSU]y-
NáDGEG]LHV]SUH]HQWRZDáZ\NUHV\FHQZDOXW\]PLHQLDMFHVLUD]G]LHQQLHQLHPDVHQVX
ND*GRUD]RZR WZRU]\üLOXVWUDFMLQDSRGVWDZLHGDQ\FK]ED]\0R*QDNRU]\VWDMF]PR*liwo-
FLELEOLRWHNL*',Z\JHQHURZDüMHUD]QDG]LHLZ\ZLHWODüX*\WNRZQLNRPSU]ygotowany
SOLN-H*HOLMHGQDNLOXVWUDFMHVprzygotowywane QDSRGVWDZLHGDQ\FKZ\QLNá\FK] komu-
nikacji
]X*\WNRZQLNLHPQLHPDZ\MFLDWU]HEDWZRU]\üLOXVWUDFM]DND*G\PUazem.
:DUWRUyZQLH*SDPLWDü*HGREUDLOXVWUDFMDutworzona przez profesjonalnego grafika w do-
brym pro
JUDPLHJUDILF]Q\PQDSHZQREG]LHOHSV]DQL*przygotowana ]DSRPRFVNU\SWX
w PHP.
1DOH*DáRE\ZLFUDF]HMRGU]XFLü (chyba*HQLHPDLQQHMPR*OLZRFLSRP\Vá\Wypu:
two
U]HQLH]DSRPRF3+3SU]\FLVNyZJUDILF]Q\FK]RNUHORQ\PWHNVWHPF]\JHQHURZanie
lo
VRZHJRWáD:\NoU]\VWDMELEOLRWHN*'LHNVSORDWXMVZyMVHUZHUWDPJG]LHMHVWWRX]asad-
nione.
-H*HOL]QDMG]LHV]ÄJRWRZFH´ZSRVWDFLSURFHGXUWZRU]F\FKLOXVWUDFMHQDSLVDQ\FKZM]\NX
C lub w Perlu, z wykorzystaniem biblioteki GD
NWyUD MHVW GOD QLFK WDN*H GRVWSQD EH]
pro
EOHPXSRUDG]LV]VRELH]LFKSU]HNRQZHUWRZDQLHPGR3+30HWRGRORJLDG]LDáDQLDDQa-
wet n
D]Z\IXQNFMLVEDUG]RSRGREQH:SURJUDPLHQDSLVDQ\PZM]\NX&bLEOLRWHN*'
zidentyfikujesz po wierszu:
#include "gd.h"
a w programie napisanym w Perlu po wierszu:
use GD;
Katalog skryptów przeznaczonych do generowania grafiki – z wykorzystaniem biblioteki GD –
znajd
XMH VL na stronie
http://php.resourceindex.com/Complete_Scripts/Images_and_Graphs/.
Katalog ci
JOHVLUR]ZLMDDOHtymczasem nie jest zbyt bogaty. 0R*QDtam jednak RGV]XNDü
na przy
NáDGGDUPRZ\VNU\SWNWóry tworzy kod kreskowy na podstawie podanej liczby.