21. oktober 2002 - 20:50Der er
15 kommentarer og 1 løsning
"realtime" resize af billede med gd lib
haløjsa
titlen er måske ikke den mest passende, fordi jeg ved godt hvordan jeg resize'er et billede med gd lib.
Mit problem er, at jeg gerne vil have det gjort i en funktion og ikke bare en henvisning til et script. Jeg vil altså gerne have at nogenlude sådan her:
og så laver du en fil der hedder phpside.php som tager ovennævnte argumenter og returnerer billedet sammen med en header som fortæller at det er af typen image!
2989: Hvis de samme billeder gentagne gange bliver sendt ud i samme størrelse, kan det betale sig at lave et script der en gang for alle resizer billederne, da det er en temmeligt cpu-krævende operation at lave realtime-resize af billeder!
tipsen: jeg har også lavet det som du skriver: "<img src="phpside.php?pid=$pic_to_resize&w=$max_w&h=$max_h">"
men jeg ville gerne lave det i en funktion, hvilket åbenbart ikke rigtig kan lade sig gøre :(
jeg ved godt det bruger en masse CPU (det er jo det der er det sjove :) men billederne skal kunne vises i mange forskellige opløsninger. Jeg har overvejet at gemme billederne også slette dem igen hvis de nu ikke er blevet vist i f.eks 5 dage, men det er for meget besvær :)
2989: Det kan fint lade sig gøre med en funktion - den skal bare være i filen phpside.php og reagere på de input som der sendes i url'en!!
morpheus: Det er ikke helt korrekt, at det ikke er ressourcekrævende! Din udgave laver ikke noget resize af billedet - du fortæller udelukkende browseren, at den skal skalere det billede den har modtaget. Dette er skidt, da browseren er dårlig til at skalere billeder i forhold til eksempelvis GD Lib - dvs. et billede skaleret af browseren vil være i dårligere kvalitet end et billede skaleret vha. GD Lib.
Dertil kommer, at hvis du skalerer billedet i browseren med 50% i både højde og bredde, vil du sende ca. 4 gange så mange data til browseren i forhold til hvad der rent faktisk er nødvendigt! Hvis du laver et thumbnail som er 10% af oprindelig højde og bredde, vil du sende ca 100 gange så mange data som er nødvendigt! Ikke smart!
2989: Tak men jeg bestræber mig på ikke at indkræve point for denne slags "ikke-svar".
tipsen: > Det kan fint lade sig gøre med en funktion - den skal bare være i filen phpside.php >og reagere på de input som der sendes i url'en!! Hehe ja, men det er jo netop det han prøver at undgå.
phpgris: Hvis det er dét han gerne vil undgå, er det fordi han ikke har forstået, hvordan en webside egentlig hentes fra serveren - jeg kan ikke se, det kan være et problem at hente et billede som er output fra et php-script som indeholder en funktion der resizer billedet og sender det som output!
jeg havde regnet med at src-parameteren i img-tagget "bare" skulle have et billede. Det er da det der sker når man bruger en php fil som "src" ??? funktion kan lave præcis samme output og det burde derfor virke ?
En af grundene til at jeg overhoved ville lave det som funktion, er at nogle af parameterne IKKE må være synlige for brugeren, hvilket de bliver når man bruger POST.
jeg ved dog godt at det kan løses uden en funktion, så det vil jeg gøre :)
source i et image-tag skal bare pege på en url som returnerer et gyldigt billede - så om du refererer til en fysisk fil som indeholder et gif-billede eller et php-script, som udfra nogle nærmere angivne parametre returnerer et gif-billede, er fuldstændig ligegyldigt!
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.