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ásaheader('Content-type: image/PNG');
vagyheader('Content-type: image/JPEG');
- frissítésre kényszerítésHeader('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 elemekImageTTFText($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églalapokimageRectangle($képazonosító, $x1, $y1, $x2, $y2, $szín);
vagyimageFilledRectangle($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éseimageCopy($celkep, $forraskep, $celx, $cely, $forrasx, $forrasy, $forrasszélesség, $forrasmagasság);
vagyimageCopyMerge($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-bugimagealphablending($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ásimagePng($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
$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