[ maarinko @ 01.09.2008. 01:28 ] @
Hteo bih da kad uplodujem slike da na njih napisem text, recimo u gornjem levom uglu (dobro da ne bude bas po ivici ispisano :-) ) adresu mog sajta. Moje pitanje je da li mogu to da uradim pomocu neke PHP funkcije? Ja sam malo pretrazivao internet i nasao sam neku PHP funkciju imagefttext koja ima sledece parametre:

imagefttext ($image , $size , $angle , $x , $y , $color , $fontfile , $text)

Uradio sam sledece:
- uzeo sam sliku $image,
- stavio umesto $size broj 12 (velicina fonta pretpostavka),
- $angle ne znam sta je i stavio sam broj 5,
- za $x sam uzeo broj 5 (pretpostavio sam da je to kordinata desno od ivice u pikselima),
- za $y sam uzeo isto 5 (pretpostavio sam da je to kordinata na dole od gornje leve ivice slike),
- $color tu valjda treba odrediti boju slova i pretpostavio sam da treba neka RGB boja i uzeo sam paletu R51G102B255,
- i na kraju $text tu pretpostavljam da trebam upisati tekst koji zelim da ispisem na slici pa sam pod navodnicima upisao kraci tekst od dve reci.

I naravno nije radilo :) . Da li bi neko mogo da mi napise sta i kako trebam da upisem u toj funkciji, naravno ako u opste ta funkcija i sluzi za to? Ako ne sluzi da li neko zna koja funkcija sluzi za to?

[ Man-Wolf @ 01.09.2008. 01:58 ] @
Pogledaj manual: http://www.php.net/manual/en/function.imagefttext.php

Angle = ugao;

Mada, mislim da bi ti lakse bilo da negde potrazis gotovu funkciju za pisanje texta po slikama (hotscripts.com na primer) :-)

[ maarinko @ 01.09.2008. 10:44 ] @
Dzaba si mi dao taj link, ne razumem engleski jezik! Ako ima neko neki srpski link koji objasnjava problematiku pisanja teksta po slikama u PHP-u neka ga upise, bicu mu zahvalan, posto vidim da vas mrzi da mi objasnite ovde (mislim na one koji znaju nesto u vezi ovoga).
[ askaratazor @ 01.09.2008. 11:11 ] @
Mala digresija, a kako mislis da naucis bilo sta o php-u i bilo cemu vezanom za web dizajn ako ne znas engleski :)
[ maarinko @ 01.09.2008. 12:32 ] @
Evo naso sam neku skripticu koja ukratko i lepo radi ispis teksta na slici ali imam problem. Naime, na link odakle sam iskopirao ovu skripticu stoji da ona daje rezultat sliku i to sivkasti pravougaonik u kome je ispisan taj tekst. Medjutim kad ja pokrenem tu skriptu na serveru gde mi je hostovan sajt nista se ne desava - samo bela strana kao da postoji neka sintaksna greska. Da li neko vidi gresku ili razlog zbog cega se na mom serveru ne prikazuje slika?

Code:
<?php
// Postavljanje vrste sadrzaja
header("Content-type: image/png");

// Kreiranje slike
$im = imagecreatetruecolor(400, 30);

// Kreiranje nekih boja
$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 399, 29, $white);

// Tekst kojeg zelimo ispisati na slici
$text = 'Testiranje...';
// Font teksta
$font = 'arial.ttf';

// Dodadavanje senke na tekst
imagettftext($im, 20, 0, 11, 21, $grey, $font, $text);

// Ispisivanje teksta na slici
imagettftext($im, 20, 0, 10, 20, $black, $font, $text);

// Koriscenje imagepng() rezultira jasnijim tekstom u poredjenju sa imagejpeg()
imagepng($im);
imagedestroy($im);

?>
[ Nemanja Avramović @ 01.09.2008. 12:47 ] @
Skripta radi. Proveri da li imaš instaliran GD sa Freetype podrškom, kao i da li imaš font Arial.ttf u folderu gde je skripta (ovo negde nije potrebno, npr. ako imaš Windows server sa instaliranim fontom "Arial", ali nikako nije na odmet da taj fajl ubaciš pored skripte).
[ maarinko @ 01.09.2008. 15:42 ] @
Da ubacio sam font i radi i kod mene. Medjutim imam sad jedan drugi problem. Kako sad da umesto napravljene slike $im=imagecreatetruecolor(400, 30); stavim konkretnu sliku, na primer imam hostovanu sliku u istom folderu na hostingu gde je i ta skripta pod nazivom slika1.jpg ????
[ Nemanja Avramović @ 01.09.2008. 16:08 ] @
http://php.net/imagecreatefromjpeg
[ maarinko @ 01.09.2008. 16:53 ] @


Neznam engleski!!

Stavio sam umesto $im = imagecreatetruecolor(400, 30) sledeci red $im = 'slika3.PNG' i kao rezultat pojavi se samo mali pravougaoncic u kome jedva je stala rec "Image". U cemu je problem, da li neko zna? Kako da ubacim konkretnu sliku?
[ Nemanja Avramović @ 01.09.2008. 16:55 ] @
Pa i nije ti potreban engleski da razumeš koje argumente prihvata ta funkcija. Ali evo, da ti pomognem - prosledi joj ime fajla.

Mislim, stvarno je glupo da ljudi ovde sede i tebi prevode PHP manual, kad sve lepo piše. Što reče askaratazor, kako misliš da naučiš bilo šta o php-u i bilo čemu vezanom za web dizajn ako ne znaš engleski (barem malo)?
[ maarinko @ 01.09.2008. 18:21 ] @
Citat:
Nemanja Avramović: Pa i nije ti potreban engleski da razumeš koje argumente prihvata ta funkcija. Ali evo, da ti pomognem - prosledi joj ime fajla.

Mislim, stvarno je glupo da ljudi ovde sede i tebi prevode PHP manual, kad sve lepo piše. Što reče askaratazor, kako misliš da naučiš bilo šta o php-u i bilo čemu vezanom za web dizajn ako ne znaš engleski (barem malo)?


Necemo o politici ok?

Nekako sam provalio jednu funkciju i uspeo sam. Umesto $im = imagecreatetruecolor(400, 30) napisao sam $im = imagecreatefrompgn('slika3.PNG') i sad mi lepo ubacuje konkretnu sliku. Medjutim sad imam jedan nov problem. Naime, skripta lepo odradi sve i prikaze mi sliku na kojoj je iscrtan tekst ali kad pogledam posle "fizicku" sliku na hostingu ona je neizmenjena (tekst nije ubacen na njoj). Da li neko zna sta trebam da dodam u skriptu da mi posle svega toga na hostingu i ostane tako editovana slika? Na kraju krajeva ja i sve ovo hocu zbog toga da mi i ostane editovana slika. I naravno neka pisu oni koji stvarno hoce da mi pomognu, i takvim cu biti stvarno zahvalan. Ja ne shvatam zasto je ovde na ovom sajtu toliko problem da neko napise par reda nekog PHP koda i pomogne???
[ Nemanja Avramović @ 01.09.2008. 18:30 ] @
Zato što je cilj ovog foruma da se korisnici istog podstiču da sami uče PHP. Ako hoćeš da neko piše kodove umesto tebe, postoji u okviru elitesecurity sajta forum "IT berza poslova", gde ćeš uvek naći ljude koji su raspoloženi za pisanje skripti, uz određenu nadoknadu, naravno.

p.s. Ko je pominjao politiku?
[ maarinko @ 01.09.2008. 18:40 ] @
Citat:
Nemanja Avramović: Zato što je cilj ovog foruma da se korisnici istog podstiču da sami uče PHP. Ako hoćeš da neko piše kodove umesto tebe, postoji u okviru elitesecurity sajta forum "IT berza poslova", gde ćeš uvek naći ljude koji su raspoloženi za pisanje skripti, uz određenu nadoknadu, naravno.

p.s. Ko je pominjao politiku?


Ovako, ja sam dosao na ovaj sajt zato sto imam problem u zelji da ga zajedno resimo. E sad posto u ovom forumu se naplacuje svaka "pomoc" onda ok eto vise necu da dolazim na ovoj sajt. Uzgred u mom brouzeru stalno je bio otvoren vas sajt i upamcen tako da ste samnom povecavali posetu sajtu. Sad ste me razocarali i evo ovo je zadnja moja poseta sajtu.
[ Nemanja Avramović @ 01.09.2008. 18:51 ] @
Na ovom forumu se ne naplaćuje svaka pomoć, već se naplaćuje fizikalisanje za druge. Savet i uputstva uvek možeš dobiti bez ikakve nadoknade.
[ MilanRS @ 20.12.2008. 17:26 ] @
Citat:
Nemanja Avramović: Zato što je cilj ovog foruma da se korisnici istog podstiču da sami uče PHP. (...)


Nisam hteo da otvaram novu temu jer mi se učinilo da naslov ove može da odgovara.
Naime, hteo bih da napravim baner na koji bi se iz mysql baze upisivala tri reda teksta.
Imam blog i razmišljao sam da iz baze iščita tri naslova, linkuje i postavi na sliku.
Tu sliku bih onda postavio u potpis na drugom sajtu.
Da li je to uopšte moguće?
Molim za savete, predloge i ideje pa da nešto pokušam da uradim.
Mislio sam na server postaviti jednu sliku u koju bi npr. svakih n sati bila upisana tri poslednja naslova sa bloga.
Onda bih samo tu sliku stavio u img na forumu.
[ Nikola Poša @ 20.12.2008. 18:41 ] @
Evo ovako "na prvu loptu" mi pade ovako neshto napamet:
Treba da imash neki zaseban skript koji ce se zvati npr. baner.php, a njegova uloga ce biti upravo kreiranje te slike. U njemu bi se nalazio taj kod kojim cesh dohvatati tri najnovija naslova. A deo koda za kreiranje te slike bi ishao ovako nekako:
Code:

$slika = imagecreatefromjpeg("slika.jpg"); //kreiranje slike na osnovu postojece slike, koja ce biti pozadina

$boja_teksta = imagecolorallocate($slika , 255, 255, 255); //boja teksta koji ce biti ispisan na slici, u ovom sluchaju - bela

$y = 10 //y - koordinata ispisivanja teksta
while ($red = mysql_fetch_assoc($rezultat)){ //dohvatanje naslova
   imagestring($slika, 5, 20, ($y + 10), $red['naslov'], $boja_teksta); //dodavanje stringova (naslova) na sliku u petlji
}

header("Content-type: image/jpeg");
imagejpeg($slika); //prikaz slike

A na tom forumu gde hocesh da se prikazuje slika samo stavish:
Code:
<img src = "baner.php" alt = "Baner" />


Eto to mi je prvo palo napamet, nadam se da sam ti bar dao neku ideju...

[Ovu poruku je menjao Nikola Poša dana 20.12.2008. u 19:53 GMT+1]
[ Nemanja Avramović @ 20.12.2008. 18:43 ] @
Naravno da je moguće, i to na više načina. Možeš držati neku sliku na koju treba upisivati tekst u jednom fajlu i na svakih n sati pozivati skriptu (imaš u PHP FAQ temi kako se to radi) koja će ispisivati tekst preko slike i čuvati je kao drugi fajl. Onda linkuješ sliku u potpisu na forumu.

Problem ti može praviti to što će browseri keširati sliku i neće uvek prikazivati nove naslove sa bloga. To možeš rešiti ili preko serverskih direktiva (.htaccess fajl na Apache serverima), tako što ćeš reći serveru da se slike (ili samo ta slika) ne keširaju već da browser uvek vuče sliku sa servera. Drugi način je da samu sliku serviraš preko PHP skripte, i da pre serviranja slike šalješ određeni header i time kažeš browseru isto to (da ne kešira sliku). Samo, uzmi u obzir da dosta foruma filtrira IMG tagove i ne dozvoljava embed drugih fajlova (php, asp, html, js) kao slike. Ali, i to se da rešiti uz pomoć mod_rewrite-a ako si na Apache serveru.

Verovatno ima još neki način, ali eto ti ova dva za početak.

edit: Preteče me Nikola
[ MilanRS @ 21.12.2008. 00:09 ] @
Hvala vam,
dobre ideje, dobri predlozi!

Isprobao sam.
Jedino se pojavio problem sa encodingom. U bazi je utf-8 a po slici ispisuje ? umesto naših karaktera.
Onda sam u header dodao i charset:
Code:
header("Content-type: image/jpeg; charset=UTF-8");

i ništa se nije promenilo.

Sad sam pokušao da dodam link na te naslove i vidim da ne može.
Kad dodam html zaglavlje, javi mi grešku da je header već poslat.

[Ovu poruku je menjao MilanRS dana 21.12.2008. u 04:56 GMT+1]
[ Nikola Poša @ 21.12.2008. 09:50 ] @
A jesi probao da pri dohvatanju tih naslova iz baze, odmah posle konekcije poshaljesh onaj chuveni upit "SET NAMES UTF8"?

A i ne znam kako si zamislio da to budu zasebni linkovi, kad ti hocesh te naslove da "zalepish" na sliku...

Pa u tom skriptu nikako ne mozhesh da dodash zaglavlje, a i nelogichno je da ga dodash, jer ti output-ujesh sliku, a ne HTML kod...
[ Nemanja Avramović @ 21.12.2008. 11:12 ] @
Kako pišeš tekst po slici? Nisam siguran da imagestring() podržava naša slova, ali sam prilično siguran da sa imagettftext() (+ možda neki font sa našim slovima) to može da se reši.

Linkove, naravno, ne možeš ugraditi u sliku
[ MilanRS @ 21.12.2008. 14:43 ] @
Koristio sam imagestring().
Kad stavim i "SET NAMES UTF8", umesto naših slova budu nemački preglasi.
Naučio sam kako se piše po slici, hvala vam za to, kad mi zatreba, znaću.

Ali...
Znači, ne mogu ti naslovi svaki voditi na svoju adresu.
A to sam hteo da uradim.

Koliko ja sad vidim, ne postoji nijedna mogućnost da se dobije tako nešto.
Znači, hteo sam u potpis na forumu da postavim baner sa tri linka, tri poslednja naslova sa bloga a onaj naslov koji zainteresuje nekoga, da klikne ta taj. Ne da se svima otvara naslovna strana.

Pošto potpisi na forumu ne dozvoljavaju html, ni tako ne mogu izvesti to.
Ako vi znate neku drugu mogućnost, molim da mi kažete, a ako ne, preživeću i bez te "reklame".
[ Nikola Poša @ 21.12.2008. 15:11 ] @
Probaj i sa onom funkcijom koju ti je Nemanja predlozhio...

A shto se tiche tih zasebnih linkova, pa ne znam, mogao bi recimo da tu svoju sliku koja ce biti baner podelish na tri dela, pa da php-op generishesh tri slike (tri zasebna skripta), pa da ih tamo na forumu nekako sklapash... Al' ne znam, to mi je nekako "divlje" reshenje... :)
[ Nemanja Avramović @ 21.12.2008. 15:20 ] @
Ne, ne postoji mogućnost da ubaciš link unutar slike. Možeš da generišeš Flash, ali to je već druga tema i treba ti Ming biblioteka za PHP.

Jedino logično rešenje je da ta slika linkuje na naslovnu bloga a da prikazuje poslednja 3 naslova sa bloga.

Za ovo sklapanje na forumu što Nikola pominje, morao bi da se loguješ skriptom na forum i menjaš svoj potpis (ili gde već planiraš da ubaciš sliku).
[ MilanRS @ 21.12.2008. 15:38 ] @
Uspeo sam prikazati naša slova pomoću ove ttf funkcije, fonta Verdana ili Arial, i onoga set names utf8.

Dobro zvuči ta ideja o tri skripte koje kreiraju tri slike.
Ali onda bi trebalo staviti da prvi link vodi na url/1, drugi na url/2, treći url/3 pa npr. preko htaccess fajla napraviti da ovaj url/1 vodi na najnoviji post, drugi na drugi po starosti, treći na treći. I uvek bi link radio kako treba.

A što se tiče flasha, on ne može u potpis na smf forumu, koliko ja znam.

[Ovu poruku je menjao MilanRS dana 21.12.2008. u 17:00 GMT+1]
[ ban17 @ 21.12.2008. 17:02 ] @
Mislim da za te linkove postoji jednostavnije rešenje, jednostavno koristi <area> tagove.
tako mozes postaviti 3 linka na jednu sliku.
[ Nemanja Avramović @ 21.12.2008. 17:07 ] @
Čovek priča o forumu (koji, uzgred, verovatno nije njegov), a tamo nema <area> i sličnih tagova, samo <a> ([url]) i <img>. Osim, naravno, ako vlasnik foruma ne ubaci podršku za <area> tagove, ali čisto sumnjam da će neko baš zbog njega to uraditi
[ MilanRS @ 21.12.2008. 18:07 ] @
Da li je moguće podesiti htaccess file da jedan url vodi na najnoviji post, drugi na onaj malo stariji i treći... ?
Lako bi to bilo kad bi linkovi bili fiksni, ali kad god se napiše novi post, treba da se ažurira.
Ako ne može, onda ću odustati od te ideje.
Jedino ako može to što Nemanja kaže, preko flasha.
Forum dozvoljava prikaz slike sa url/baner.php, pa bi verovatno prikazao i flash ako bi se generisao na isti način.
[ Nemanja Avramović @ 21.12.2008. 18:14 ] @
Ne verujem. Slike se embeduju preko IMG taga a flash preko OBJECT/EMBED tagova tako da ne može kao slika.

Naravno, možeš napraviti da prva slika linkuje na www.sajt.com/ulaz.php?clanak=1 (ili ga rewrite-uješ na sajt.com/clanak/1) i to vodi recimo na najnoviji članak, pa onda isto to sa oznakama 2 i 3 (ili nešto drugo po želji) za ostale članke, a onda u ulaz.php iz baze izvlačiš i prikazuješ određeni članak (ili pokupiš url pravog članka pa redirektuješ na njega).