PHP_4_Tworzenie_stron_WWW_cwiczenia_praktyczne_cwphp4.pdf

(137 KB) Pobierz
5R]G]LDã*UDILNDZ3+3
*UDILNDZ3+3
52='=,$â
%\üPR*H]DVWDQDZLDV]VL F]\PUy*QLVL JUDILNDZ3+3RGJUDILNLZ]Z\Ná\P+70/-u.
7ZRU]FVWURQ\:::QDSHZQRRSDWU\ZDáHMHLOXVWUDFMDPLD]QDF]QLN
IMG
i jego atrybuty
]SHZQRFLQLHV&LREFH'RP\ODV]VL WDN*H*HXPLeszczenie
znacznika
IMG
w danych
Z\SLV\ZDQ\FK SU]H] VNU\SW 3+3 ]DRZRFXMH LOXVWUDFM QD RGSRZLHGQLP PLHMVFX VWURQ\
:::3RFRZL FWHPDWRZLSRZL FDüFDá\UR]G]LDá"
2GSRZLHG(QLHMHVWVNRPSOLNRZDQD1LHE G]LHP\]DMPRZDüVL WXWDMVWDW\F]QJUDILNGo-
áF]DQ GR GRNXPHQWyZ +70/ ] SOLNyZ
z ilustracjami. Natomiast omówimy w tym roz-
dziale
dynamiczneWZRU]HQLHLOXVWUDFMLSU]H]VNU\SWG]LDáDMF\QDVHUZerze.
àDWZRVL GRP\OLüMDNLHWRQLHVLH]DVREPR*OLZRFL% G]LHPR*QDLOXVWURZDüUy*QHLn-
formacMH
JUDILNDPL QD SRGVWDZLH ]HEUDQ\FK GDQ\FK 1LH WU]HED Z W\P FHOX WZRU]\ü ZLHOX
LOXVWUDFMLLZ\ELHUDüWDNLHMNWyUD&LRGSRZLDGD3RSURVWXXWZRU]\V]MVRELHDUDF]HMX*\t-
NRZQLNRZL

ZF]DVLHU]HF]\ZLVW\PF]\OLZWHG\JG\E G]LHSRWU]HEQD

Zacznijmy od pRND]DQLD*HWRMHVWEDUG]RáDWZH3RPR*HQDPZW\PSRQL*V]HüZLF]HQLH
½ZLF]HQLH
8WZyU]SURJUDPNWyU\SU]\JRWXMHLZ\ZLHWOLLOXVWUDFM ZIRUPDFLH-3*3RVWDUDMVL DE\
E\áDWRELDáDNUDWNDQDF]DUQ\PWOHRUR]PLDUDFK[
Nie bardzo wiadoPRMDNVL ]DEUDüGRWDNLHJR]DGDQLDDW\PF]DVHPJG\]QDP\PHWRG
MHVWWREDUG]RáDWZH3U]\JRWRZDQLHLZ\ZLHWOHQLHLOXVWUDFMLRGE\ZDVL ZNLONXHWDSDFK
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
1DVW SQLHQDOH*\XWZRU]\üU\VXQHNX*\ZDMFIXQNFML
createimage
. Funkcja ta zwraca zmien-
QNWyUDMHVWMHJRLGHQW\ILNDWRUHP
103
LPDJHFUHDWH
3+3²þZLF]HQLDSUDNW\F]QH
Tworzy rysunek. ParDPHWU\RNUHODMMHJRUR]PLDU
w
SLNVHODFKDIXQNFMD]ZUDFD]PLHQQE GFMHJR
identyfikatorem.
:VSyáU] GQH LOXVWUDFML V OLF]RQH RG OHZHJR JyUQHJR URJX 3LHUZV]D ZVSyáU] GQD GRW\F]\
osi poziomej, a druga – pionowej.
Na tak utworzonej iOXVWUDFML
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]PLHQQDE GFDLGHQW\ILNDWRUHPrysunku
oraz
VNáDGRZHNRORUX5*L%RGGR

)XQNFMD]ZUa-

ca identyfikator koloru.
:\SHáQLHQLHU\VXQNXLGHQW\ILNDWRUMHVWSLHUZV]\P
DUJXPHQWHP

NRORUHPVWDQRZLF\PF]ZDUW\DUJXPHQW

'UXJLLWU]HFLDUJXPHQWWRZVSyáU] GQHRGNWyU\FK
ro]SRF]\QDVL Z\SHáQLDQLHREV]DUXMDNRREV]DUUR]u-
PLDQHVSLNVHOHMHGQHJRNRORUXDMDNLNROZLHNLQQ\
kolor stanowi brzeg).
W rysunku, którego identyfikator jest pierwszym argu-
PHQWHPU\VXMHOLQL RZVSyáU] GQ\FKSRF]WNXLNRFD
podanych w kolejnych czterech parametrach. Kolor linii
MHVWRNUHORQ\V]yVW\PSDUDPHWUHP
LPDJHILOO
LPDJHOLQH
:\ZLHWOHQLHSU]\JRWRZDQHMLOXVWUDFMLZIRUPDFLH-3*MHVWUHDOL]RZDQHSU]H]IXQNFM
imagejpeg
.
,VWQLHMWDN*HIXQNFMHZ\ZLHWODMFHLOXVWUDFMHZLQQ\FKIRUPDWDFK3DPL WDM*HPXsisz
za-
FKRZDü]JRGQRüZ\V\áDQHJRQDJáyZNDGRNXPHQWX]IRUPDWHPU\VXQNX
LPDJHMSJ
LPDJHJLI
LPDJHSQJ
:\ZLHWOHQLHLOXVWUDFMLZIRUPDFLH-3*$UJXPHQW
funkcji jest identyfikatorem ilustracji.
:\ZLHWOHQLHLOXVWUDFMLZIRUPDFLH*,)$UJXPHQW
funkcji jest identyfikatorem ilustracji.
:\ZLHWOHQLHLOXVWUDFMLZIRUPDFLH31*$UJXPHQW
funkcji jest identyfikatorem ilustracji.
&DáRüSURJUDPXSU]HGVWDZLDVL QDVW SXMFR
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++) {
104
5R]G]LDã*UDILNDZ3+3
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üQLHSRMDZLVL VSUZDG((UyGáRVWURQ\-H*HOLSURJUDP
Z\JHQHURZDáMDNLNRPXQLNDWREá G]LHWDPQDSHZQRJR]QDMG]LHV]
0R*QD ]DGDü S\WDQLH GODF]HJR GR SURVWHJR GZXNRORURZHJR U\VXQNX ]DVWRVRZDOLP\ IRr-
PDW-3*DQLH*,)7HQGUXJL]DSHZQLáE\SUDZGRSRGREQLHPQLHMV]\SOLNLEUDNVWUDWSRd-
F]DV NRPSUHVML 7R SUDZGD -HVW MHGQDN SHZLHQ SUREOHP -H*HOL PDV] ]DLQVWDORZDQ\ SDNLHW
PHPTriad, prawdopodREQLH
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\ZLHWOLVL SRSUDZQLHVSUDZG((UyGáRVWURQ\DZV]\VWNRVWDQLHVL Ma-
VQH 7D ZHUVMD ELEOLRWHNL *' VáX*FHM GR PDQLSXORZDQLD U\VXQNDPL

NWyUHM X*\ZDV] QLH

posiada obVá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:LQGRZVSUDZGRSRGREQLHSRMDZLVL PDá\NáRSRW
*G\E\QLHGDáRVL WHJRSUREOHPXUR]ZL]DüE\áDE\WRWUDJHGLD)RUPDW31*QLHMHVWMHVz-
F]HZ\VWDUF]DMFo
rozpowszechniony, a JPG posiada swoje ograniczenia. W niektórych sy-
WXDFMDFKWDNVL VNáDGDZSU]\SDGNXJHQHURZDQLDJUDILNLSRVWURQLHVHUZHUDG]LHMHVL WDN
QDMF] FLHM

LVWQLHMHSRWU]HEDZ\NRU]\VWDQLDIRUPDWX*,)

105
3+3²þZLF]HQLDSUDNW\F]QH
1DV]F] FLHGDZQLHMELEOLRWHND*'obsáXJLZDáDIRUPDW*,):\VWDUF]\ZL FW ZHUVM NWó-
U G\VSRQXMHV] ]DVWSLü RGSRZLHGQL 2GSRZLHGQL ZHUVM GOD :LQGRZV ]QDMG]LHV] SRG
adresem:
http://aki.a4.pl/ksiazki/cwphp4/php_gd_gif_404.zip
(158 kB).
FLJQL W\
SOLN PXVLV] UR]SDNRZDü D QDVW SQLH SOLN
php_gd.dll
VNRSLRZDü GR NDWDORJX
php\extensions
VZRMHM LQVWDODFML D ZL F ]DSHZQH GR
c:\apache\php\extensions).
Plik, który
PLDáHZW\PNDWDORJXGRWHMSRU\QDZV]HONLZ\SDGHNQDMSLHUZ]Drchiwizuj.
2GWHJRPRPHQWXSRZLQLHQHEH]SUREOHPXWZRU]\üLZ\ZLHWODüWDN*HLOXVWUDFMHZIRUPa-
FLH*,)6SUDZG]LP\F]\WDNVL VWDáRZQDVW SQ\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
:S WOLGODND*GHJR]HSyOV]DFKRZQLF\E G]LHP\ORVRZDüNRORU-H*HOLFKFHP\E\
ZDUWRüND*GHM]HVNáDGRZ\FK]DZLHUDáDVL ZSU]HG]LDOH−Z\ZRáDQLHIXQNFMLSRZLn-
QRPLHüQDVW SXMFSRVWDü
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\PNRORUHm.
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áQLHQLH ND*GHJR SROD UHDOL]XMHP\ IXQNFM
imagefill
.RORU MHVW RF]\ZLFLH W\P Z\EUa-
Q\PORVRZRZND*G\PSU]HELHJXS WOL-DNRPLHMVFHRGNWyUHJRQDOH*\UR]SRF]üZ\SHá
QLDQLH Z\ELHUDP\ OH*F\ PQLHM ZL FHM 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).
106
5R]G]LDã*UDILNDZ3+3
(IHNW G]LDáDQLD SURJUDPX SU]HGVWDZLD SRQL*V]D LOXVWUDFMD NWyUD ] SHZQRFL WUDFL QD HIHk-
WRZQRFL]SRZodu
braku kolorów.
Rysunek 5.2. SzachowQLFDZ\SHáQLRQDORVRZ\PLNRORUDPL
=DXZD**HZQDJáyZNX]RVWDáSRGDQ\RGSRZLHGQLW\SSOLNX
header("Content-type: image/gif");
LZ\NRU]\VWDQRZáDFLZIXQNFM Z\ZLHWOHQLDLOXVWUDFML
imagegif
).
7ZRU]F ZáDVQH JUDILNL SU]\ SRPRF\ PRGXáX *' PR*HV] NRQWURORZDü NRORU ND*GHJR
pikseOD
SDPL WDMF R RJUDQLF]HQLDFK ND*GHJR ] IRUPDWyZ JUDILF]Q\FK

6SUyEXMHP\ WHJR

doNRQDüZQDVW SQ\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\IXQNFM NWyUDRNUHODNRORUSRMHG\QF]HJRSLNVHOD
LPDJHVHWSL[HO
'ODU\VXQNXRNUHORQHJRSU]H]SLHUZV]\DUJXPHQW
GHILQLXMHNRORUSLNVHODRZVSyáU] GQ\FKSRGDQ\FK
przez
GUXJLLWU]HFLDUJXPHQW&]ZDUW\DUJXPHQWRNUHODNRORU
1LHPXVLP\PDUWZLüVL RSRZWyU]HQLDZ\ORVRZDQ\FKSXQNWyZ:]ZL]NX]W\PZS WOL
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);
107
Zgłoś jeśli naruszono regulamin