Avatar billede hrole Mester
31. marts 2009 - 10:48 Der er 27 kommentarer og
1 løsning

Problemer med getimagesize - igen

Hej,

Jeg troede problemet var løst efter jeg fik hjælp i disse tråde http://www.eksperten.dk/spm/870111 og http://www.eksperten.dk/spm/870120.

Efter jeg har omdøbt filerne til *.jpg fungerer nedenstående ikke længere. Koden er:
<?php $file = $dir.'/'.substr('000'.$nr,-3).'.jpg';
                              $size = getimagesize($file);
                              $width = $size[0];
                              if (($max < 1000) && ($width < 2000)) {
                            echo '<p align="center" class="billede">'.'<img src="'.$file.'" width="960" alt="" title="" border="0">'; }
                            if (($max < 1000) && ($width > 2000)) {
                            echo '<p align="center" class="billede_rul">'.'<img src="'.$file.'" height="1300" alt="" title="" border="0">'; }
                            if ($max > 1000) {
                            echo '<p align="center" class="billede">'.'<img src="'.$dir.'/'.substr('0000'.$nr,-4).'.jpg" width="960" alt="" title="" border="0">'; } ?>

Men width hentes ikke. Jeg har prøvet echo $file; og den korrekte sti med filnavn, men echo $width; giver intet resultat. Hvis jeg fx skriver $file = "http://www.enhjemmeside.com/etbillede.jpg"; og herefter echo $width; får jeg den korrekte pixelværdi.
Avatar billede jakobdo Ekspert
31. marts 2009 - 10:59 #1
Efter:
$size = getimagesize($file);
så prøv:

print_r($size);
Avatar billede hrole Mester
31. marts 2009 - 11:04 #2
width udskrives desværre stadig ikke
Avatar billede jakobdo Ekspert
31. marts 2009 - 11:06 #3
Hvad udskriver den så: print_r($size);  ??
Avatar billede erikjacobsen Ekspert
31. marts 2009 - 11:08 #4
Angiver du den korrekte sti? Og hedder filerne noget med .jpg eller .JPG?
Avatar billede hrole Mester
31. marts 2009 - 11:18 #5
print_r($size); udskriver intet.

stien er korrekt og billederne vises helt korrekt. Alle filerne er omdøbt til *.jpg
Avatar billede jakobdo Ekspert
31. marts 2009 - 11:22 #6
Test lige:

<?php
$file = $dir.'/'.substr('000'.$nr,-3).'.jpg';
echo 'Filen ('.$file.')findes';
if(!file_exists($file)){
echo ' <b>IKKE</b>';
}
$size = getimagesize($file);
Avatar billede erikjacobsen Ekspert
31. marts 2009 - 11:27 #7
Jeg vil nu også gætte på at stien ikke er korrekt. Prøv derfor jakobdos lille "Test lige", og fortæl os hvad der står.

Mit gæt er at du har en sti som "/billede.jpg", hvor den første "/" angiver roden på filsystemet på webserveren, og ikke roden på det webhotel.
Avatar billede hrole Mester
31. marts 2009 - 11:31 #8
filen findes IKKE.
Mærkeligt.
Selve billedet hentes fint, og stien til billedet ER den korrekte.
Avatar billede jakobdo Ekspert
31. marts 2009 - 11:37 #9
Det er ikke underligt.
Når du skriver:

/billede.jpg, så henter browseren det automatisk fra:

www.dinside.dk/billede.jpg

Men når php får besked om: /billede.jpg, så henter den det var roden af serveren.

Og det kunne være noget i stil med:

/var/www/customer/13454/dinside.dk/htdocs/
Den kigger altså:
/billede.jpg
Men bør jo kigge:
/var/www/customer/13454/dinside.dk/htdocs/billede.jpg

Netop som erik siger.
Avatar billede hrole Mester
31. marts 2009 - 11:38 #10
$dir henter en adresse fra en database. Helt præcist henter den mappen hvor de pågældende billeder ligger fx: http://www.minside.com/billeder/sommerferien2009
Avatar billede jakobdo Ekspert
31. marts 2009 - 11:41 #11
Inden du kalder: getimagesize()
Så prøv at udskriv: $file
Avatar billede hrole Mester
31. marts 2009 - 11:53 #12
Avatar billede jakobdo Ekspert
31. marts 2009 - 11:58 #13
Dit script vil vel gerne have noget i stil med:

billeder/sommerferien2009/001.jpg
Avatar billede hrole Mester
31. marts 2009 - 12:16 #14
ok, gode forslag modtages :)
Avatar billede erikjacobsen Ekspert
31. marts 2009 - 13:06 #15
Når du siger "sti" så mener du altså "url" ? Det er to forskellige ting. Du kan ikke regne med at funktioner beregnet til stier også virker på url-er + at det er gevaldigt meget langsommere med url-er, når det nu ikke er nødvendigt.
Avatar billede hrole Mester
31. marts 2009 - 14:08 #16
erikjakobsen: den er jeg med på.

Men jeg er stadig ikke helt med på hvorfor jeg ikke kan have en url i getimagesize(). Det burde da være muligt ifølge http://dk2.php.net/getimagesize. Kan det skyldes at min url indeholder mellemrum som ikke er encodet?
Avatar billede hrole Mester
31. marts 2009 - 14:15 #17
jeg havde vidst ret i min antagelse. Følgende løste balladen:

$file = str_replace(" ", "%20", $dir.'/'.substr('000'.$nr,-3).'.jpg');
Avatar billede erikjacobsen Ekspert
31. marts 2009 - 14:25 #18
Du kan, hvis din PHP er indstillet til det. Det kan man ikke regne med.

Men det er en umanerligt dårlig ide, hvis det er på dit eget site, og du kunne bruge en sti til filen i stedet for.
Avatar billede jakobdo Ekspert
31. marts 2009 - 17:39 #19
hrole: Du er ude at lave noget virkelig dårlig kode. Hør nu lidt på hvad Erik siger.
Det kan jo godt være din slamkode virker her og nu, men hvad med at lave det "rigtigt" første gang, og lade os "eksperter" guide dig lidt på vej.
Avatar billede hrole Mester
31. marts 2009 - 17:48 #20
jeg lytter meget gerne og vil også helt lave det optimalt første gang. Har du et forslag til ændring?
Avatar billede hrole Mester
31. marts 2009 - 17:48 #21
der skulle stå helst og ikke helt
Avatar billede erikjacobsen Ekspert
31. marts 2009 - 19:08 #22
Ændring: brug en sti til filen i stedet for en url.
Avatar billede hrole Mester
31. marts 2009 - 20:09 #23
ok, måske et dumt spørgsmål: Men kan jeg det når hjemmeside og billederne ligger på to forskellige domæner? Hvis ja - hvordan?
Avatar billede hrole Mester
31. marts 2009 - 20:15 #24
det er vel en sti hvis der ikke er en protokol foran. Så må dette vel være den sti jeg skal anvende når hjemmeside og billeder ligger placeret på to domæner:
www.minhjemmeside.com/www/sommerferien2009/
Avatar billede erikjacobsen Ekspert
31. marts 2009 - 20:16 #25
2 forskellige domæner, nej, så kan du ikke på andre måder. Men størrelsen af billedet ændrer sig vel ikke, så du behøver ikke slå det op mere end een gang, og gemme i databasen ved siden af url-en.
Avatar billede hrole Mester
31. marts 2009 - 20:31 #26
det kan jeg ikke lige gennemskue.
De urls som jeg har i min database er blot til mapperne hvori der ligger en mængde billeder (med varrierende højde og bredde). Det er således kun mapperne jeg kalder via databasen og ikke specifikt hvert billede.
taler vi forbi hinanden?
Avatar billede erikjacobsen Ekspert
31. marts 2009 - 20:37 #27
Jah, men så kunne du jo lave en ny tabel med billeder. Men jeg ved ikke hvorfor du har delt det op på den måde - jeg påpeger blot at det ikke er smart at lave http-requests sådan som du gør.
Avatar billede hrole Mester
02. juni 2009 - 20:40 #28
lukker
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