Bildgröße ermitteln ohne vollständiges Einladen

TheFrager

Grünschnabel
Hallo,

ich möchte in einem Board den Nutzern die Möglichkeit geben, Grafiken einzubinden, z.B. "http://www.beispiel.de/grafik.jpg" o.ä..

Über fopen() prüfe ich zuerst, ob die Datei aufrufbar ist und dann möchte ich die Bildbreite und die Bildhöhe ermitteln, damit nicht das Design bei der Bilddarstellung auseinandergezerrt wird, falls das Bild überdimensionale Maße hat.

Bisher habe ich dafür getimagesize() benutzt, aber das Problem hierbei ist folgendes: Bei getimagesize() lädt PHP zuerst die Grafik _serverintern_ vollständig herunter und gibt erst dann die Ausmaße der Grafik zurück, was bei größeren Dateien unendlich lange dauern kann!

FRAGE:
Wie kann ich mit PHP die Breite und Höhe einer Grafik ermitteln, ohne dass PHP die vollständige Datei herunterlädt? Gibt es da irgendeine Möglichkeit? Danke für Tipps!
 
Hallo!

TheFrager hat gesagt.:
.....Bei getimagesize() lädt PHP zuerst die Grafik _serverintern_ vollständig herunter.....
Tut fopen() auch. ;)
Du könntest die Breite zwar auch mit imagesx() bzw. die Höhe mit imagesy() ermitteln, aber dazu müsste das Bild auch erst in den Speicher geladen (also geöffnet) werden..... kommt also auf dass gleiche hinaus.
Du wirst also um ein vollständiges laden nicht drum herum kommen.

Evtl. währe es möglich dass das Bild per JavaScript clientseitig bei der Eingabe der URL geprüft wird.
Nur könnte der User 1. JavaScript deaktiviert haben und 2. könnte er das Bild (da es ja nur verlinkt wird) jederzeit ohne erneute Überprüfung (gleiche URL inkl. Dateinamen vorausgesetzt) austauschen.

Gruss Dr Dau
 
Zurück