12. juli 2005 - 10:13Der er
15 kommentarer og 1 løsning
Gem billede med GD
Ohøj...
Jeg har lavet mig et lille script her. Det skriver noget tekst oven på en billede. Jeg vil gerne have scriptet til at gemme billedet og derefter echo/print det via en <img src=billede>. Som det er nu, bliver billedet bare lavet "on the fly" og så slettet igen.
$filnavn = '/tmp/billede1.png'; imagepng($im, $filnavn); // Billedet bliver gemt imagepng($im); // Billedet bliver skrevet ud til browseren imagedestroy($im); exit;
Men du er nok ikke helt færdig der. Du skal sikkert også checke om billedet allerede er gemt, om det skal overskrives, eller om du vil bruge det gemte billede istedet for at generere et nyt. Hvis det er noget med at billedet ændrer sig en gang imellem, skal du måske også se på hvor gammel filer er, og evt. overskrive det med en nyere version. Men selve gemme delen er ovenfor :)
Bliver det gemt rigtigt? Det eneste der er tilføjet er filnavnet og det ekstra imagepng() kald, så det skulle være nemt at finde fejlen. Hvis du har udskift af fejl slået til, så prøv at sætte content-type til 'text/plain' og se hvad den brokker sig over. Jeg vil tro at det enten er et problem med at skrive filen (rettigheder, ugyldigt filnavn eller relativ/absolut sti til filen) eller at det måske er de to imagepng() kald lige efter hinanden.
Hvis det er det sidste der sker, kan du droppe det sidstekald og bruge readfile($filnavn) i stedet. Det er sikkert smartere uanset hvad, da der egentlig ikke er grund til at generere billedet to gange.
jeg har prøvet at skrifte til text/plain og får denne fejl: Warning: imagepng(): Unable to open 'gmail99455.png' for writing in /hsphere/local/home/tobiaswk/uploadimago.net/signatures.php
Jeg vil mene at den smarteste løsning er at skrive et check ind i dit script, der ser om filen allerede eksisterer, og derefter enten bare skriver filen ud, eller genererer en ny. På den måde skal du kun lave et enkelt <img> tag, der så selv vil sørge for at outputte det rigtige billede.
// Herefter genererer du billedet....hvis scriptet når hertil, er filen for gammel, eller den eksisterer ikke. Du kan evt slette filen først med unlink();
jeg vil bare have en almindelig echo streng hvor jeg udskriver billedet. Så jeg evt. kan tilknytte tekst. Istedet for at den ny bare udskriver billedet.
altså jeg vil have den udskriver det som html med <img> tag og tekst måske.
Det kan du nok ikke gøre i det samme script, eftersom det reelt er et billede i sig selv. Enten skal du droppe nummer to imagepng() kald, og bruge scriptet som et almindeligt script der skriver html ud, eller også skal du skrive image tagget ud i det script der kalder det vi arbejder med nu.
Det giver det problem at det script der skriver html tagget ud, ikke kender filnavnet, da det er et tilfældigt genereret navn. Det vil sige at du enten skal finde på en anden måde, der ikke er tilfældig, eller gemme filnavnet et eller andet sted, så du kan bruge det i et html tag senere.
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.