Avatar billede nikolajdu Nybegynder
21. marts 2004 - 23:00 Der er 8 kommentarer og
1 løsning

Gemme gdlib billede

Jeg laver et billede med tekst ved hjælp af gdLib og det virker jo fortræffeligt men hvordan pokker gemmer jeg billedet på serveren?

$im = ImageCreateFromJpeg("test.jpg");
$sort = ImageColorAllocate($im,255,255,255);
ImageTTFText ($im,22,0,4,28,$sort,"/h4/p/site/font.ttf","hej");
header("Content-type: image/jpeg");
ImageJPEG($im);
ImageDestroy($im);

Jeg har prøvet at fjerne ImageDestroy($im); - Men kan bare ikke finde billedet.

/Nikolaj
Avatar billede dennismp Nybegynder
21. marts 2004 - 23:24 #1
[...]
int imagejpeg ( resource image [, string filename [, int quality]])

imagejpeg() creates the JPEG file in filename from the image image . The image argument is the return from the imagecreate() function.

The filename argument is optional, and if left off, the raw image stream will be output directly.

altså: giv et ekstra argument til imagejpeg, som skal være filnavnet på jpeg-billedet.
Avatar billede nikolajdu Nybegynder
21. marts 2004 - 23:25 #2
Aha smart det må prøves :))
Avatar billede nikolajdu Nybegynder
22. marts 2004 - 17:01 #3
Det virker i og for sig ganske fint jeg har dog et andet lille problem. De billeder jeg vil gemme bliver gemt med det navn efter den tekst der står på. Det betyder at jeg har ikke kan få fat i dem igen hvis de har mellemrum eller andre specialtegn. Så tænkte jeg - Urlencode er lykken men ak - Den gør det bare ikke godt nok endnu - Hvad gør jeg galt :

Imagejpeg($im,$path.urlencode($picText).".jpg");
ImageDestroy($im);
return "<img src=\"".urlencode($picText).".jpg\" alt=\"".$picText."\" style=\"width:485px;height:40px\" />";

Urlencoden udskriver :

Men i virkelighed vil den have en sti : http://localhost/h4/p/site/Manageren%2527s+Hj%25F8rne.jpg

Og hvad på linux - Der rykker det set ikke??? Går ud fra at urlencoden skal laves om til noget andet men hvad?

/Nikolaj
Avatar billede nikolajdu Nybegynder
22. marts 2004 - 17:02 #4
urlencoden udskriver : Manageren%B4s+Hj%F8rne.jpg (og det passer med filnavnet på serveren)

Men for at kunne se billede skal jeg på windows skrive : Manageren%2527s+Hj%25F8rne.jpg

Og på linux virker det set ikke.
Avatar billede dennismp Nybegynder
22. marts 2004 - 17:04 #5
prøv:
Imagejpeg($im,$path. $picText.".jpg");
ImageDestroy($im);
return "<img src=\"".urlencode($picText).".jpg\" alt=\"".$picText."\" style=\"width:485px;height:40px\" />";
Avatar billede nikolajdu Nybegynder
22. marts 2004 - 17:08 #6
Fatter ikke hvorfor mellemrum ikke bliver til %20

Nå skidt de får navn efter rækken i databasen.

Tak for hjæpen :))
Avatar billede nikolajdu Nybegynder
22. marts 2004 - 17:10 #7
Den virker i øvrigt heller ikke.
Avatar billede dennismp Nybegynder
22. marts 2004 - 17:29 #8
et forsøg på at forklare, hvad jeg _tror_ går galt.

urlencode() laver lige netop mellemrum til %20. Så når du laver:
IMagejpeg($im,$path . urlencode($picText) . ".jpeg")
så bliver $picText urlencoded. og derefter gemt med det navn (filsystemet forstår jo ikke url-encoding). Fx. bliver
"Fil Med mellemrum.jpg" til
"Fil%20Med%20mellemrum.jpg"
.. Nu hedder din fil: præcist "Fil%20Med%20mellemrum.jpg" på din disk.
Når apache modtager en request, fx. webside.dk/Fil%20Med%20mellemrum.jpg . så ved den godt at den skal decode url'en. Så nu får vi igen
"Fil Med mellemrum.jpg" .. og da dette filnavn ikke matcher "Fil%20Med%20mellemrum.jpg" så kan den ikke finde den.

Håber det hjælper dig.
Avatar billede nikolajdu Nybegynder
22. marts 2004 - 17:34 #9
Det bliver jo netop ikke til %20 nogle steder og det er det der undrer mig men det er selvfølgelig logik at - Med og uden ikke findes :))
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester