[PHP] Getimagesize werkt niet altijd

Pagina: 1
Acties:
  • 137 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • WimB
  • Registratie: Juli 2001
  • Laatst online: 30-03-2024
Ik gebruik op een site met veel foto's de functie getimagesize. In bijna alle gevallen werkt deze functie goed. Maar niet altijd. Ik kan hier echter geen verklaring voor vinden. Zo gebruik ik de functie:
PHP:
1
2
3
$fotolijst[$foto]["size"] = getimagesize($foto);
$fotolijst[$foto]["width"] = $size[0];
$fotolijst[$foto]["height"] = $size[1];

En meestal werkt dit, kijk maar eens hier (het gaat om de foto's onderaan):
http://www.aertsen.be/pand.php?nr=2002129

Maar met andere foto's werkt het weer niet:
http://www.aertsen.be/pand.php?nr=2003174 (totaal verkeerd)
http://www.aertsen.be/pand.php?nr=2002111 (foto's te breed uitgerokken)
http://www.aertsen.be/pand.php?nr=2002136 (foto's te breed uitgerokken)

Kan er iemand een verklaring geven waarom deze functie soms niet werkt?

Acties:
  • 0 Henk 'm!

  • Alex
  • Registratie: Juli 2001
  • Laatst online: 20-08 21:38
PHP:
1
2
3
$size = getimagesize($foto);
$fotolijst[$foto]["width"] = $size[0];
$fotolijst[$foto]["height"] = $size[1];


Dit werkt :)

Edit:
Overigens kan het ook zo:
PHP:
1
2
3
$fotolijst[$foto]["size"] = getimagesize($foto);
$fotolijst[$foto]["width"] = $fotolijst[$foto]["size"][0];
$fotolijst[$foto]["height"] = $fotolijst[$foto]["size"][1];

Echter dit array gebruik is echt bagger registreer dan je array iig op een andere manier :/

[ Voor 56% gewijzigd door Alex op 16-03-2003 11:23 ]

Deze post is bestemd voor hen die een tegenwoordige tijd kunnen onderscheiden van een toekomstige halfvoorwaardelijke bepaalde subinverte plagiale aanvoegend intentioneel verleden tijd.
- Giphart


Acties:
  • 0 Henk 'm!

  • Sn3akz
  • Registratie: November 2000
  • Laatst online: 05-08 13:55
Vaag probleem. Zit er nog verschil tussen die foto's? Probeer anders eens een beetje met de bestanden te rommelen. Kopieer een foto die het wel goed doet en rename die naar de foto die te breed wordt uitgetrokken. Dan kan je iig even testen of die functie brak is of je foto :)

edit:

Waar trek jij $size vandaan?? Die is toch gewoon leeg??

[ Voor 15% gewijzigd door Sn3akz op 16-03-2003 11:26 ]


Acties:
  • 0 Henk 'm!

  • WimB
  • Registratie: Juli 2001
  • Laatst online: 30-03-2024
prog-konijn schreef op 16 maart 2003 @ 11:22:
PHP:
1
2
3
$size = getimagesize($foto);
$fotolijst[$foto]["width"] = $size[0];
$fotolijst[$foto]["height"] = $size[1];


Dit werkt :)
Bedankt, nu werkt het inderdaad:
http://www.aertsen.be/pand.php?nr=2002136

Was trouwens wel een heel stomme fout van mij 8)7

Acties:
  • 0 Henk 'm!

  • T. van Beek
  • Registratie: Januari 2002
  • Laatst online: 13-10-2024

T. van Beek

flickritus

Ik zie op dit moment trouwens nergens height en width staan? :?

http://flickr.com/photos/itommy/


Acties:
  • 0 Henk 'm!

  • WimB
  • Registratie: Juli 2001
  • Laatst online: 30-03-2024
T. van Beek schreef op 16 March 2003 @ 11:32:
Ik zie op dit moment trouwens nergens height en width staan? :?
Hoe bedoel je? Bij elke foto is deze toch netjes opgegeven, voorbeeld:

[img]"fotos/20021369.jpg"[/img]

Acties:
  • 0 Henk 'm!

Verwijderd

Die tags attributen kun je meestal gewoon weglaten... :)

[ Voor 17% gewijzigd door Verwijderd op 16-03-2003 12:44 . Reden: Dom woordfoutje zag ik nu pas :P ]


Acties:
  • 0 Henk 'm!

  • --MeAngry--
  • Registratie: September 2002
  • Laatst online: 19-09 16:35

--MeAngry--

aka Qonstrukt

De functie is eigenlijk alleen handig als je plaatjes van een andere size wilt voorzien en de aspect ratio daarbij wilt behouden.

Tesla Model Y RWD (2024)


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Of het renderen minder "schokkerig" wilt laten verlopen/sneller wil laten doen...

Btw, volgende keer even zelf debuggen. Als je error_reporting(E_ALL) had aangezet (zie de FAQ enzo van P&W) dan had je dit zelf gevonden...

[ Voor 47% gewijzigd door ACM op 16-03-2003 13:21 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Maar om nog eens even aan de titel te refereren; getimagesize() werkt inderdaad niet altijd. De helpdesk van mijn hosting-service zei er dit over;

"Het blijkt dat deze functie nogal gevoelig is voor image formats die een kleine afwijking hebben, b.v. paar
bit extra in header..."


Toch wel handig om te weten dacht ik zo :)

PS. Iemand nog alternatieven voor getimagesize()?

Acties:
  • 0 Henk 'm!

Verwijderd

leuke huisjes

modbreakDank u voor deze zinvolle bijdrage. Ik stel voor dat je voortaan dit soort replies achterwege laat, want dit is niet de eerste keer.

[ Voor 93% gewijzigd door drm op 06-01-2004 13:12 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Let trouwens op het feit dat (als dit je boeit tenminste ;)) getimagesize() in oudere versies van PHP (bijv. op 4.0.6) niet werkt bij een SWF die gecompressed is.

Maar aangezien je de functie momenteel niet voor SWF bestanden gebruikt boeit het niet echt. Ik kreeg dit probleem met een project dus vanwege dit topictitel kwam ik er weer op. Misschien handig voor in de search.

Acties:
  • 0 Henk 'm!

Verwijderd

Ik heb even die functie getest die als alternatief werd gegeven bij de 'User Contributed Notes' en ik kan zeggen dat deze perfect werkte bij al mijn geteste url´s (dus ook bij diegenen die niet werkten met getimagesize()).

Hieronder dus de desbetreffende alternatieve functie:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function getimagesize_remote($image_url) 
{
   $handle = fopen ($image_url, "rb");
   $contents = "";
   if ($handle) {
   do {
       $count += 1;
       $data = fread($handle, 8192);
       if (strlen($data) == 0) {
           break;
       }
   $contents .= $data;
   } while(true);
   } else { return false; }
   fclose ($handle);

   $im = ImageCreateFromString($contents);
   if (!$im) { return false; }
   $gis[0] = ImageSX($im);
   $gis[1] = ImageSY($im);
   
   // array member 3 is used below to keep with current getimagesize standards
   $gis[3] = "width={$gis[0]} height={$gis[1]}";
   ImageDestroy($im);
   return $gis;
}
Pagina: 1