d2jsp
Log InRegister
d2jsp Forums > Off-Topic > International > Magyar > Dinamikus Signature > Tutorial
12313Next
Add Reply New Topic New Poll
Member
Posts: 22,445
Joined: Aug 31 2007
Gold: 8,203.38
Dec 9 2008 04:03pm
A trükk dinamikus képek készítésében, hogy a PHP fájl kimenete is lehet a kép.
A hátránya, hogy csak php futtatására képes szerveren működik. Ha nincs ilyened,
regisztálj valamelyik ingyenes domain + tárhely szolgáltatónal, pl CJB, ATW, stb



1. Készíts egy sig.png nevü mappát a szerveren, open
2. A futtatandó PHP filet nevezd el index.php -nak
3. Másold ide a kivant fontot (pl Arial.ttf)
4. Másold ide a kivant hátteret (bg.png)
5. Nyitsd meg szerkesztésre az index.php-t



/************************************ a kép *****************************************/



- a képkimenet beállítása
header('Content-type: image/PNG');
vagy
header('Content-type: image/JPEG');



- frissítésre kényszerítés
Header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
Header('Expires: Thu, 19 Nov 1981 08:52:00 GMT');
Header('Pragma: no-cache');

A képet rég lejártnak tituláljuk, és kötelezöen letöltetjük minden egyes megnyitáskor.
Ha nem így tennénk, a kép első letöltéskor a kliens böngészőjének gyorsítótárában maradna,
és nem lenne tovább dinamikus



- a képobjektum létrehozása
$képazonosító = imageCreateFromPng($kepfajl);
vagy
$képazonosító = imageCreateFromJpeg($kepfajl);

Visszatérési értéke a képazonosító, mellyel innentől kezdve hivatkozhatunk a képobjektumra.



- színazonosítók létrehozása
$színazonosító = imageColorAllocate($képazonosító, $piros, $zöld, $kék);
vagy
$színazonosító = imageColorAllocateAlpha($képazonosító, $piros, $zöld, $kék, $alpha);

Egy színazonosítót ad vissza, ami a második, harmadik, negyedik paraméterként megadott RGB
kódnak megfelelő színt jelenti, az első paraméterként megadott képobjektumban. Az összes színt,
amit használni szeretnénk a $képazonosító objektumában, így kell előtte definiálnunk.
imageColorAllocateAlpha esetén az ötödik paraméternek beállíthatjuk a szín láthatóságát (0-100)



- szöveges elemek
ImageTTFText($képazonosító, $fontméret, $elfordulás, $x, $y, $szín, $fontfájl, $szöveg);

Ezzel a függvénnyel truetype fontokat tudunk ráírni egy képobjektumra.
A második paraméterben meghatározhatjuk a kiírandó font méretét, a harmadik
paraméterben – fokban megadva – elforgathatjuk a kiírt szöveget,
ezt követi a két koordináta, majd a font színe.
hetedik paraméterként a font fájl elérését megadni.
A függvény utolsó, nyolcadik paramétere maga a kiírandó szöveg.



- téglalapok
imageRectangle($képazonosító, $x1, $y1, $x2, $y2, $szín);
vagy
imageFilledRectangle($képazonosító, $x1, $y1, $x2, $y2, $szín);

A függvény egy olyan téglalapot rajzol a képre, melynek a második, harmadik paraméterekben
megadott pont lesz a bal felső pontja, a negyedik, ötödik paraméterekben megadott pont pedig a jobb
alsó pontja. A téglalap kerete az ötödik paraméterben megadott szín lesz.
Az imageFilledRectangle nem körvonalat, hanem kitöltött téglalapot rajzol.



- más képek ráillesztése
imageCopy($celkep, $forraskep, $celx, $cely, $forrasx, $forrasy, $forrasszélesség, $forrasmagasság);
vagy
imageCopyMerge($celkep, $forraskep, $celx, $cely, $forrasx, $forrasy, $forrasszélesség, $forrasmagasság, $alpha);

Az első paraméterként megadott képre rámásolja a második egy részét. A cél képnek a harmadik,
negyedik paraméterként megadott koordinátájára fog kerülni, a forrás kép ötödik, hatodik paraméterként
megadott koordinátáján lévő, hetedik, nyolcadik paraméterben megadott nagyságú képrészlete.
imageCopyMerge esetén az ötödik paraméternek beállíthatjuk a kép láthatóságát (0-100)



- az alpha-bug
imagealphablending($image, true);
imagesavealpha($image, true);

Pár szerveren nincs fenn a png áttetszőségéhez szükséges API,
de ezzel kiköszöbölhetjük.



- kirajzolás
imagePng($képazonosító); // imageJPEG($képazonosító);
imageDestroy($kepazonosító);








/******************************** LS sig template *********************************/

az index.php a karakteredröl készült XML filet olvassa be ezt icon_pointr.gif $mit = file('
az én szerveremen 4-es php van, ezért nem használok simleXMLloadFile-t

az LS karaktered minden adata kiolvasható

Code

<?php
Header('Content-type: image/PNG');
Header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
Header('Expires: Thu, 19 Nov 1981 08:52:00 GMT');
Header('Pragma: no-cache');

// az utolsó számsorozat a charid, azt változtatsd
$mit = file('http://ladderslasher.d2jsp.org/xmlChar.php?i=160073');

$name = trim(strip_tags($mit[3]));
$classid = (int)strip_tags($mit[5])+1;
$level = (int)strip_tags($mit[6]);
$exp = (int)strip_tags($mit[7]);
$kil = (int)strip_tags($mit[8]);
$dea = (int)strip_tags($mit[9]);
$str = (int)strip_tags($mit[11]);
$dex = (int)strip_tags($mit[12]);
$vit = (int)strip_tags($mit[13]);
$int = (int)strip_tags($mit[14]);
$hpm = (int)strip_tags($mit[15]);
$mpm = (int)strip_tags($mit[16]);
$mqa = (int)strip_tags($mit[17]);
$mqp = (int)strip_tags($mit[18]);
$classarray = array('None', 'Fighter', 'Barbarian', 'Rogue', 'Magician', 'Guardian', 'Samurai', 'Paladin', 'Monk', 'Ninja', 'Warlock', 'Headhunter', 'Alchemist');
$class = $classarray[$classid];


$image = ImageCreateFromPNG('bg.png');
$black = imagecolorallocate($image, 0, 0, 0);
$white = imagecolorallocate($image, 255, 255, 255);
$font = 'arial.ttf';


$c1x = 30;
$c1y = 35;
ImageTTFText($image, 11, 0, $c1x-5, $c1y, $black, $font, $name);
ImageTTFText($image, 10, 0, $c1x-5, $c1y+15, $black, $font, 'Lvl '.$level.' '.$class);
ImageTTFText($image, 9, 0, $c1x, $c1y+30, $black, $font, 'hp  '.$hpm);
ImageTTFText($image, 9, 0, $c1x, $c1y+45, $black, $font, 'mp  '.$mpm);

$c2x = 150;
$c2y = 35;
ImageTTFText($image, 9, 0, $c2x, $c2y, $black, $font, 'mqs   '.$mqp . ' / ' . $mqa);
ImageTTFText($image, 9, 0, $c2x, $c2y+15, $black, $font, 'kills:  '.$kil);
ImageTTFText($image, 9, 0, $c2x, $c2y+30, $black, $font, 'deaths:  '.$dea);
ImageTTFText($image, 9, 0, $c2x, $c2y+45, $black, $font, 'Exp:  '.$exp);

$c3x = 270;
$c3y = 35;
ImageTTFText($image, 9, 0, $c3x, $c3y, $black, $font, 'vit  '.$vit);
ImageTTFText($image, 9, 0, $c3x, $c3y+15, $black, $font, 'dex  ' . $dex);
ImageTTFText($image, 9, 0, $c3x, $c3y+30, $black, $font, 'int  '.$int);
ImageTTFText($image, 9, 0, $c3x, $c3y+45, $black, $font, 'str  ' . $str);


ImagePNG($image);
imagedestroy($image);
?>





/************************************ a JSP sig *************************************/

az index.php egy topicot olvas be guestként
$url-nek állíts be egy általad nyitott topikot

az accodról ezek az adatok olvashatók így ki:
joined, fg, online/offline, postcount
amit kiszámoltathatsz: ppd, days since joined

Code

<?php
Header('Content-type: image/PNG');
Header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
Header('Expires: Thu, 19 Nov 1981 08:52:00 GMT');
Header('Pragma: no-cache');


// egy saját topicod url-jét tedd ide
$url = 'http://forums.d2jsp.org/index.php?showtopic=26191550&f=129';

$read = file($url);
$nev = strip_tags($read[69]);
$pos = strpos($read[85], 'online');

if($pos != false) {
$afk = false;
}
else {
$afk = true;
}

if(strlen($read[83]) == 15) {
$lvl = '0';
$xp = substr($read[83],7,3);
}
elseif(strlen($read[83]) == 17) {
$lvl = substr($read[83],7,1);
$xp = substr($read[83],9,3);
}
else {
$lvl = substr($read[83],7,2);
$xp = substr($read[83],10,3);
}


$image = ImageCreateFromPNG('bg.png');
$white = imagecolorallocate($image, 255, 255, 255);
$blacka = imagecolorallocatealpha($image, 0, 0, 0, 60);
$reda = ImageColorAllocatealpha($image, 255, 0, 0, 50);
$bluea = ImageColorAllocatealpha($image, 0, 0, 150, 50);
$font = 'DeadSecretary.ttf';

$pozy = 4;
$pozx = 5;
$xpw = $pozx+90+(int)$xp*160/1000;

imageRectangle($image, $pozx + 89, $pozy-1, $pozx + 251, $pozy + 11, $blacka);
imagefilledrectangle($image, $pozx + 90, $pozy, $pozx + 250, $pozy + 10, $black);
imagefilledrectangle($image, $pozx + 90, $pozy, $xpw, $pozy + 10, $reda);

ImageTTFText($image, 9, 0, $pozx + 100, $pozy + 10, $white, $font, $_GET['a'].'Level '.$lvl.' spammer  xp '.$xp);

if($afk == true) {
ImageTTFText($image, 10, 0, $pozx, $pozy + 13, $reda, $font, 'afk');
}
else {
ImageTTFText($image, 15, 0, $pozx, $pozy + 13, $bluea, $font, 'spamming');
}

imagealphablending($image, true);
imagesavealpha($image, true);

ImagePNG($image);
imagedestroy($image);
?>


kb ennyi
Member
Posts: 53,914
Joined: Apr 15 2007
Gold: 11,500.00
Trader: Trusted
Dec 9 2008 04:05pm
Jó lett. biggrin.gif
Tapasztalatból mondom, nekem minimális háttértudással 4 óra alatt sikerült csinálni egy egész jót azok alapján amit mutattál. ^^

Sticky it !

This post was edited by Anarkin on Dec 9 2008 04:05pm
Member
Posts: 44,245
Joined: Jun 10 2007
Gold: 3,551.99
Dec 9 2008 04:08pm
kár, hogy alig értek belőle valamit sad.gif

Quote (Anarkin @ Tue, 9 Dec 2008, 23:05)
Sticky it !


vouch
Member
Posts: 12,687
Joined: Sep 17 2007
Gold: 0.00
Dec 9 2008 04:08pm
Quote (Ad4mz @ Wed, Dec 10 2008, 12:08am)
kár, hogy alig értek belőle valamit sad.gif



vouch


hát ezzel én is így vagyok
ám végig olvastam ^^
Member
Posts: 31,873
Joined: May 14 2005
Gold: 124.45
Dec 9 2008 04:09pm
Quote (Ad4mz @ Tue, 9 Dec 2008, 22:08)
kár, hogy alig értek belőle valamit sad.gif


Az jó, én semmit nem értek belőle. De aki vágja mi is ez, annak biztos N1 és hasznos műhelytitok... wink.gif
Member
Posts: 42,981
Joined: Apr 14 2006
Gold: 3,000.00
Dec 9 2008 04:10pm
hm, sztem ez ragadós
Member
Posts: 22,445
Joined: Aug 31 2007
Gold: 8,203.38
Dec 9 2008 04:11pm
Quote (Paszulyka @ Tue, 9 Dec 2008, 23:08)
hát ezzel én is így vagyok
ám végig olvastam ^^


Quote (Ad4mz @ Tue, 9 Dec 2008, 23:08)
kár, hogy alig értek belőle valamit sad.gif


smile.gif
a template-kben csak pár változót kell átállítani és kész
$url
$font
$image
$color
Member
Posts: 43,289
Joined: Mar 25 2005
Gold: 355.92
Dec 9 2008 04:12pm
köszi,szerintem érthető smile.gif
Member
Posts: 8,496
Joined: Jul 3 2008
Gold: 90.30
Dec 9 2008 04:13pm
Quote (Ad4mz @ Tue, 9 Dec 2008, 22:08)
kár, hogy alig értek belőle valamit sad.gif



vouch


egyetertek vele.
Member
Posts: 32,949
Joined: Jan 3 2008
Gold: 3,555.00
Warn: 30%
Dec 9 2008 04:14pm
hmmm én valamennyire a htmlhez értek biggrin.gif
majd talán megpróbálkozom ezzel is köszi nagyon ez egy hasznos guide smile.gif
Go Back To Magyar Topic List
12313Next
Add Reply New Topic New Poll