Avatar billede 2989 Nybegynder
21. oktober 2002 - 20:50 Der 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:

<img src="<?=resize($pic_to_resize, $max_w, $max_h)?>">

er det muligt ???

PS: billedet skal IKKE gemmes som fil

vil i have koden til resize funktionen ?
Avatar billede phpgris Nybegynder
21. oktober 2002 - 20:56 #1
Nej, det kan ikke lade sig gøre. Taggets "src"-parameter skal jo pege på en gyldig URL - dvs. enten et script eller en fil.
Avatar billede morpheus Nybegynder
21. oktober 2002 - 21:41 #2
Jeg har gjort det på denne måde:

// Finding size of images...
$imagehw = GetImageSize("eimg/$file");
$imagewidth = $imagehw[0];
$imageheight = $imagehw[1];
// Dooing some math...
$newWidth = round($imagewidth / 2);
$newHeight = round($imageheight / 2);

echo "<img src=\"eimg/$file\" height=\"$newHeight\" width=\"$newWidth\">\n";
Avatar billede tipsen Nybegynder
21. oktober 2002 - 21:53 #3
Det kan godt lade sig gøre!

Du laver følgende tag i din html-fil:

<img src="phpside.php?pid=$pic_to_resize&w=$max_w&h=$max_h">

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!
Avatar billede morpheus Nybegynder
21. oktober 2002 - 22:00 #4
tipsen >

Er den ikke lidt kringlet i forhold til min lille "funktion"?

BTW. kan jeg oplyse at contributed notes @ www.php.net er ret gode at læse igennem for eksempler :)
Avatar billede tipsen Nybegynder
21. oktober 2002 - 22:02 #5
morpheus: Jeg kan ikke se, hvor dit billede bliver resizet?
Avatar billede tipsen Nybegynder
21. oktober 2002 - 22:05 #6
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!
Avatar billede 2989 Nybegynder
21. oktober 2002 - 22:19 #7
morpheus: øhm du resize'er jo ikke billedet

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 :)

phpgris: lav lige et svar
Avatar billede 2989 Nybegynder
21. oktober 2002 - 22:20 #8
hov tipsen lav også lige et svar
Avatar billede morpheus Nybegynder
21. oktober 2002 - 22:32 #9
Jeg resizer ikke billedet som sådan, ændrer bare højde / bredde forholdet, så det holder propertionerne.

Det er knap så resource krævende?!
Avatar billede tipsen Nybegynder
21. oktober 2002 - 22:39 #10
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!
Avatar billede phpgris Nybegynder
22. oktober 2002 - 00:57 #11
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å.
Avatar billede tipsen Nybegynder
22. oktober 2002 - 01:18 #12
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!
Avatar billede phpgris Nybegynder
22. oktober 2002 - 01:39 #13
Det er muligt men det ændrer jo ikke på at svaret er at det ikke kan lade sig gøre. Det er såmænd det eneste jeg prøver at sige.
Avatar billede 2989 Nybegynder
22. oktober 2002 - 13:28 #14
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 :)

tak for indsatsen :]
Avatar billede tipsen Nybegynder
22. oktober 2002 - 18:03 #15
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!
Avatar billede 2989 Nybegynder
23. oktober 2002 - 17:41 #16
:)
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