Skočiť na obsah Skočiť na menu

Inet.sk - internetový denník

internetový denník

Práca s obrázkami v PHP: Ukážky 2

V péhápéčku sa nedajú tvoriť len jednoduché tvary, aké sme videli v prvých ukážkach. Dnes to bude o zložených obrazcoch a praktickom využití predošlých funkcií.


 

3D kocka
Aj keď má kocka normálne 6 strán, pre vytvorenie 3D efektu nám postačia len 3 strany a správne tieňovanie.
Najprv si vytvoríme truecolor obrázok o rozmeroch 300x300 pixelov. Potom si namiešame všetky potrebné farby. Nakoniec začneme kresliť steny.
Na ľavú bočnú a hornú stenu použijeme imagefilledpolygon(), a na prednú stenu imagefilledrectangle().
S filled funkciami sme sa síce ešte nestretli, ale vôbec sa nelíšia od tých pôvodných. Teda napríklad imagerectangle() je to isté ako imagefilledrectangle(), akurát zadaná farba sa neaplikuje len na vytýčenie okrajov, ale vyfarbí celú plochu.

<?php
$im=imagecreate(300,300); //obrazok 300x300

//namiesanie farieb
$biela=imagecolorallocate($im,255,255,255);
$tmavoseda=imagecolorallocate($im,175,175,175);
$svetleseda=imagecolorallocate($im,205,205,205);
$seda=imagecolorallocate($im,239,239,239);
$cierna=imagecolorallocate($im,0,0,0);

//urcime si body polygonu lavej bocnej steny
$body=array (
20, 20,
20, 220,
55, 255,
55,45
);

//urcime si body hornej steny
$body2=array(
255,45,
220,20,
20,20,
55,45);

//vykreslime
$lava=imagefilledpolygon($im,$body,4,$tmavoseda);
$predna=imagefilledrectangle($im, 55, 45, 255, 255,$svetleseda); //prve dne cisla urcuju suradnice //laveho horneho rohu, a druhe dve suradnice praveho dolneho rohu stvoruholnika
$horna=imagefilledpolygon($im,$body2,4,$seda);

//a zobrazime
header("content-type:image/png");
imagepng($im);
imagedestroy($im);
?>

 

3D Koláčový graf
Vytvoríme si obrázok 100x100 pixelov. Pozadie bude biele, a okrem toho si namiešame pár ďalších farieb. Pre vytvorenie 3D efektu použijeme cyklus for(). To znamená, že budeme vykreslovať kružnicu, vždy posunutú o $i pixelov zhora.
Začneme na odstupe 60 pixelov, a cyklus sa bude opakovať, kým neskončíme na 50- tich pixeloch. To nám vytvorí ako keby bočnú stenu grafu.
Ten bude rozdelený v pomere 285:30:45 stupňov. Napokon, po ukončení cyklu, ešte vykreslíme vrchnú svetlú časť "koláča", čo ešte viac umocní 3D efekt.

<?php

// vytvoríme obrázok
$image = imagecreate(100, 100);
// namiesame farby
$biela    = imagecolorallocate($image, 0xFF, 0xFF, 0xFF);
$seda     = imagecolorallocate($image, 0xC0, 0xC0, 0xC0);
$tmavoseda = imagecolorallocate($image, 0x90, 0x90, 0x90);
$modra     = imagecolorallocate($image, 0x00, 0x00, 0x80);
$tmavomodra = imagecolorallocate($image, 0x00, 0x00, 0x50);
$cervena     = imagecolorallocate($image, 0xFF, 0x00, 0x00);
$tmavocervena  = imagecolorallocate($image, 0x90, 0x00, 0x00);

// spustime cyklus, ktory vytvori bocnu stranu grafu

for ($i = 60; $i > 50; $i--) {
imagefilledarc($image, 50, $i, 100, 50, 0, 45, $tmavomodra, IMG_ARC_PIE);
  imagefilledarc($image, 50, $i, 100, 50, 45, 75 , $tmavoseda, IMG_ARC_PIE);
  imagefilledarc($image, 50, $i, 100, 50, 75, 360 , $tmavocervena, IMG_ARC_PIE);
}

//vykreslime svetlejsi vrch
imagefilledarc($image, 50, 50, 100, 50, 0, 45, $modra, IMG_ARC_PIE);

imagefilledarc($image, 50, 50, 100, 50, 45, 75 , $seda, IMG_ARC_PIE);

imagefilledarc($image, 50, 50, 100, 50, 75, 360 , $cervena, IMG_ARC_PIE);

// a zobrazime
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
?>

Ako ste si všimli, farba sa dá namiešať dvoma spôsobmi.
$biela    = imagecolorallocate($image, 0xFF, 0xFF, 0xFF);
je ekvivalentom
$biela    = imagecolorallocate($image, 0, 0, 0);
ktorý sme používali doteraz.

Okrem toho, IMG_ARC_PIE znamená, že okraje kružnice budu vykreslené v celku. Existuje ešte pár podobných nastavení, no konečný rozdiel je takmer nebadateľný.

Pozn.: tento skript bol prebraný zo stránky www.php.net.

Zatiaľ sme sa pohrali len s vykreslovaním pomocou PHP funkcií. Nabudúce sa Vám budem snažiť priblížiť prácu s reálnymi obrázkami. Pozrieme sa na zmenu veľkostí a pridávanie watermarku.


Pôvodná diskusia k článku

V skripte pre 3D kolacovy graf je v 24 riadku chyba syntaxu
povodne: imagefilledarc($image 50, 50, 100, 50, 0, 45, $modra IMG_ARC_PIE); za premennou $modra chyba ciarka.

11. 07. 2007 mimi 85.248.35.xxx

dakujem

11. 07. 2007 jz 85.216.195.xxx

a co tak pridat aj linky hotove ukazky?

15. 07. 2007 matto 91.127.218.xxx

Je Vaša doména voľná?

Platená reklama

Textová reklama

Ako začať podnikať na internete? Nechajte si poradiť. Aký má byť obsah kvalitne www stránky? Tvorba www stránok, Tvorba webu, Redakčný systém - CMS, Prieskumy o nakupovaní na internete, Pôžičky
Kompletné informácie o Kika Banská Bystrica | Čo takto navštíviť Viedeň? | Zaujímavé informácie priamo od zdroja

Newsletter


Copyright © 2002 - 2012 Inet.sk, s. r. o.Všetky práva vyhradenéNeprešlo jazykovou úpravouISSN 1336-1899

Využívame kvalitný webhosting za rozumnú cenu od Webhosting Inet.sk


Bilancia skrývky Fotokniha Fotografie Osobnosti.sk