background image

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 

background image

3+3²þZLF]HQLDSUDNW\F]QH

 

104 

LPDJHFUHDWH

 

Tworzy rysunek. Par

DPHWU\RNUHODMMHJRUR]PLDU

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++) { 

background image

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*,) 

background image

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

 (158 kB).  

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, 

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). 

background image

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); 

background image

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

GRVWRSQLWRU\VRZDQ\áXNRND*HVLRNUJLHP 

SKS

<? 

3URJUDPWZRU]\LOXVWUDFM]SLFLRPDF]HUZRQ\PLLSLFLRPD

 

F]DUQ\PLRNUJDPL

 

 
  header("Content-type: image/gif"); 
 
  $rysunek = imagecreate (100,100); 
 

background image

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). 

background image

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

background image

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ü

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); 
 
 

background image

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 

 

background image

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]

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

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). 

background image

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 

background image

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-

background image

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> 

background image

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>  

background image

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.