Witamy, Gość. Zaloguj się lub zarejestruj.

Autor Wątek: Obrazki generowane automatycznie  (Przeczytany 2562 razy)

0 Użytkowników i 1 Gość przegląda ten wątek.

czarnowidz

  • *
  • Podziękowania otrzymane: 0
    • Zobacz profil
Obrazki generowane automatycznie
« dnia: Styczeń 29, 2011, 14:15:34 »
Aby stworzyć taki obrazek potrzebujemy aktywowaną na serwerze bibliotekę GD.
Żeby to sprawdzić, tworzymy plik o nazwie phpinfo.php i zawartości :

<?
phpinfo();
?>


Odpalamy plik z serwera i szukamy "GD Support", jeśli będzie "enabled" - biblioteka jest zainstalowana i wszystko powinno działać. W innym wypadku polecam kontakt z administratorem serwera.

Teraz możemy przejść do sedna sprawy.
Aby utworzyć obrazek, należy wkleić do kodu taki skrypt :

header
('Content-type: image/jpeg'); // ustawiamy nagłówek, żeby wyświetlić obrazek :P
$image = @imagecreatefromjpeg($obrazek//zapisujemy obrazek do pamięci i dalej na nim operujemy
or die("Cannot Initialize new GD image stream"); // jeśli nie mamy biblioteki GD, wyskoczy błąd
$kolor_tekstu imagecolorallocate($image255255255); // tutaj określamy kolor tekstu (obrazek, R, G, B)
$czcionka1 'LBRITE.TTF'// ustalam adres do czcionki w formacie TTF
$czcionka2 'times.ttf'// jw
// imagettftext  ( obrazek, rozmiar czcionki, kąt nachylenia czcionki, odległość x, odległość y, kolor tekstu, adres do czcionki, dane jakie chcemy wypisać )
imagettftext($image400550$kolor_tekstu$czcionka1$nick); // wg powyższego schematu ^^
imagettftext($image1201080$kolor_tekstu$czcionka2'Postów : '.$posty); // wg powyższego schematu ^^
imagettftext($image1201095$kolor_tekstu$czcionka2'Pozycja : '.$pozycja); // wg powyższego schematu ^^
imagejpeg($image); // tworzymy obrazek w formacie JPG
imagedestroy($image); // usuwamy obrazek z pamięci


Żeby obrazek miał jakieś automatycznie generowane dane, należy posiadać odpowiedni skrypt.
Jeśli chcemy zrobić statystyki graficzne dla użytkowników naszej strony - sprawa jest prosta. Za pomocą $_GET pobieramy nick użytkownika, a resztę danych wyciągamy z MYSQL. Do tego wystarczy tylko podstawowa znajomość MYSQL, więc nie będę opisywał.
Jeśli jednak nie mamy dostępu do bazy danych - z pomocą przychodzi CURL. Owa funkcja pozwala nam na pobieranie do zmiennej zawartości dowolnej strony.
W moim przykładzie pobieramy ilość postów i rangę z profilu użytkownika tego forum.

<?php
// konfiguracja
$nick=$_GET['nick']; // pobieramy nick z adresu (np. index.php?nick=czarnowidz)
$link='http://burning-brushes.pl/profile/'.$nick.'/';
$obrazek='http://img194.imageshack.us/img194/1229/12416546.jpg'// link do obrazka

$curl curl_init(); // zaczynamy sesję w curlu
curl_setopt($curlCURLOPT_URL$link); // ustawiamy adres, z którym się połączymy
curl_setopt($curlCURLOPT_RETURNTRANSFER1); 
$wynik curl_exec($curl); // a tutaj przypisujemy źródło strony do zmiennej $wynik

$wynik=explode('<td class="windowbg" width="420">'$wynik); // wycinam interesujący mnie element w tym przypadku całą tabelę z informacjami o koncie
$wynik=explode('<td style="padding-bottom: 0.5ex;"><b>Podpis:</b></td>'$wynik[1]); // do jakiegoś charakterystycznego punktu, czyli do podpisu, który i tak mi się nie przyda
$wynik=$wynik[0];

function 
data($typ$zawartosc)
{
$return=explode('<tr>'$zawartosc);
$return=$return[$typ];
$return=explode('<td>'$return);
$return=explode('</td>'$return[2]);
$return=$return[0];
return 
$return;
}

$nazwa_wysw=data(1$wynik);
$posty=data(2$wynik);
$pozycja=data(3$wynik);

// tutaj zaczyna się generacja obrazka
header('Content-type: image/jpeg'); // ustawiamy nagłówek, żeby wyświetlić obrazek :P
$image = @imagecreatefromjpeg($obrazek//zapisujemy obrazek do pamięci i dalej na nim operujemy
or die("Cannot Initialize new GD image stream"); // jeśli nie mamy biblioteki GD, wyskoczy błąd
$kolor_tekstu imagecolorallocate($image255255255); // tutaj określamy kolor tekstu (obrazek, R, G, B)
$czcionka1 'LBRITE.TTF'// ustalam adres do czcionki w formacie TTF
$czcionka2 'times.ttf'// jw
// imagettftext  ( obrazek, rozmiar czcionki, kąt nachylenia czcionki, odległość x, odległość y, kolor tekstu, adres do czcionki, dane jakie chcemy wypisać )
imagettftext($image400550$kolor_tekstu$czcionka1$nick); // wg powyższego schematu ^^
imagettftext($image1201080$kolor_tekstu$czcionka2'Postów : '.$posty); // wg powyższego schematu ^^
imagettftext($image1201095$kolor_tekstu$czcionka2'Pozycja : '.$pozycja); // wg powyższego schematu ^^
imagejpeg($image); // tworzymy obrazek w formacie JPG
imagedestroy($image); // usuwamy obrazek z pamięci
?>

A wynik powyższego kodu widać tutaj : http://szukajkamp3.info/BB/?nick=czarnowidz (za czarnowidz wstaw swój nick z forum)

Mam nadzieję, że wszystko jest wystarczająco jasno opisane...

Pozdrawiam,
czarnowidz.

Annoyer13

  • *****
  • Podziękowania otrzymane: 34
  • zzz
    • Zobacz profil
    • Ranking hostingu
Odp: Obrazki generowane automatycznie
« Odpowiedź #1 dnia: Styczeń 29, 2011, 14:15:49 »
Bardzo się przyda, dzięki za tego tuta :D

czarnowidz

  • *
  • Podziękowania otrzymane: 0
    • Zobacz profil
Odp: Obrazki generowane automatycznie
« Odpowiedź #2 dnia: Styczeń 29, 2011, 14:16:04 »
mam nadzieję, że jest wystarczająco zrozumiały :P
można oczywiście się pobawić w pliku .htacces, żeby nie tworzyć brzydkiego adresu
http://www.szukajkampe.info/BB/?nick=czarnowidz
a jakiś ładniejszy, typu :
http://www.szukajkampe.info/BB/profil/czarnowidz.jpg (ten link w rzeczywistości nie istnieje)
« Ostatnia zmiana: Styczeń 29, 2011, 14:16:14 wysłana przez Annoyer13 »