Was muss man beachten bei "getImageSize"?
Rebecca
- php
0 Christian Seiler0 Chris0 dedlfix0 Chris0 Der Martin0 Chris
0 Ashura0 Cybaer
Hallöchen zusammen,
ich habe in meinem PHP-Code folgende Anweisung:
list($width, $height) = getimagesize("thumbnails/somPicture.jpg");
Es funktioniert soweit.
Meine Frage nun: muss ich hierbei noch etwas beachten? Wie z.B. opendir ('thumbnails') oder closedir(...)?
Sind diese Anweisungen erforderlich wenn ich nur die Größe eines Bildes herausfinden möchte?
Vielen Dank im Voraus
Liebe Grüße
Rebecca
Hallo,
Meine Frage nun: muss ich hierbei noch etwas beachten? Wie z.B. opendir ('thumbnails') oder closedir(...)?
Nein.
Sind diese Anweisungen erforderlich wenn ich nur die Größe eines Bildes herausfinden möchte?
Nein. opendir()/closedir() sind (in Verbindung mit readdir()) nur dazu da, um festzustellen, welche Dateien alles in einem Verzeichnis sind. Wenn der Dateiname bekannt ist, sind diese Funktionen nicht notwendig. Falls die Datei nicht existiert, würde getimagesize() false
zurückgeben, und da Du das ganze mit list() verwurschtelst, sind dann $width
und $height
bei Dir dann identisch null
(falls die Datei nicht existiert oder kein Bild ist, das PHP versteht; wenn sie existiert, dann enthalten sie natürlich die gewünschten Angaben).
Viele Grüße,
Christian
Hallo an alle,
vielen Dank für die Hilfe und die Hinweise.
Liebe Grüße
Rebecca
Hallo,
ich habe in meinem PHP-Code folgende Anweisung:
list($width, $height) = getimagesize("thumbnails/somPicture.jpg");
Es funktioniert soweit.
Meine Frage nun: muss ich hierbei noch etwas beachten? Wie z.B. opendir ('thumbnails') oder closedir(...)?Sind diese Anweisungen erforderlich wenn ich nur die Größe eines Bildes herausfinden möchte?
Was steht denn im PHP-Manual über die Funktionsweise von getimagesize() http://de3.php.net/manual/de/function.getimagesize.php
Auf jeden Fall sollte man die Verwendung von list() hier unterlassen.
GetImageSize() liefert nämlich ein qualifiziertes FALSE, falls irgendetwas schiefgegangen ist. Das würde dann bei list() einen Folgefehler auslösen. Warum also nicht erst den Erhalt der Information prüfen?
LG
Chris
echo $begrüßung;
Was steht denn im PHP-Manual über die Funktionsweise von getimagesize() http://de3.php.net/manual/de/function.getimagesize.php
Auf jeden Fall sollte man die Verwendung von list() hier unterlassen.
GetImageSize() liefert nämlich ein qualifiziertes FALSE, falls irgendetwas schiefgegangen ist. Das würde dann bei list() einen Folgefehler auslösen. Warum also nicht erst den Erhalt der Information prüfen?
Ich stimme meinen Vorredner zu und ergänze: Da getimagesize() leider im Fehlerfall außer dem FALSE als Rückgabewert auch noch eine Warnung wirft, sollte man hier den "Error Control Operator" @ verwenden, wenn man diese nicht dem Anwender präsentieren will.
$width = $height = 0; // damit sind $width und $heigth auf jeden Fall initialisiert
if ($imagesize = @getimagesize($filename)) // das ist eine Zuweisung, kein Vergleich
list($width, $height) = $imagesize;
echo "$verabschiedung $name";
Hallo Dedlfix,
$width = $height = 0; // damit sind $width und $heigth auf jeden Fall initialisiert
if ($imagesize = @getimagesize($filename)) // das ist eine Zuweisung, kein Vergleich
list($width, $height) = $imagesize;
Das mag zwar durch die automatischen Typumwandlungen funktionieren, aber ich präferiere da doch die explizite Schreibweise, die den Parser bestimmt nicht wesentlich mehr Kraft kostet:
$_imagesize = @getimagesize($filename);
if (is_array($_imagesize))
{
list($width, $height) = $_imagesize;
}
else
{
# Fehlerbehandlung, Fehlermeldung
}
oder eben auch
if ($_imagesize === false)
{
# Fehlerbehandlung, Fehlermeldung
}
else
{
list($width, $height) = $_imagesize;
}
...wobei die erste Variante die eigensichere darstellt, die zweite immer noch "Risiken" beinhaltet
LG
Chris
Hallo Chris,
$width = $height = 0; // damit sind $width und $heigth auf jeden Fall initialisiert
if ($imagesize = @getimagesize($filename)) // das ist eine Zuweisung, kein Vergleich
list($width, $height) = $imagesize;
Das mag zwar durch die automatischen Typumwandlungen funktionieren, aber ich präferiere da doch die explizite Schreibweise, die den Parser bestimmt nicht wesentlich mehr Kraft kostet:
ich würde bei der Wahl der Schreibweise nicht nur darauf achten, was den Parser (bzw. auch Compiler, je nach Sprache) mehr Aufwand kostet, sondern welche Variante leichter zu lesen und zu verstehen ist. Und unter dem Aspekt würde ich dem Vorschlag von dedlfix eindeutig den Vorzug geben: Er ist kurz und prägnant formuliert, und man sieht auf einen Blick, was los ist. Dagegen erfordern deine beiden Vorschläge durch ihre Langform und die Verteilung in mehrere Anweisungen/Zeilen erst eine sehr intensive Betrachtung des Codes, bis man schließlich innerlich ausruft, "Ach sooo, das hätte er doch auch einfacher haben können".
Schönen Sonntag noch,
Martin
Hallo Maritn,
Du bist aber nicht "verkehrt herum"? *gg*
Je expliziter eine Schreibweise ist, desto leichter ist sie nachvollziehbar. Oder behauptest Du etwa das Gegenteil?
Es ging nicht darum, welche Schreibweise kompakter ist!
Und außerdem geht es doch hier um die Sicherheit der Aussagen.
Die implizierte automatische Typumwandlung ist keinesfalls dauerfest (versionsfest). Der explizite Vergleich sollte allerdings versionsfest sein.
Allerdings lässt auch meine Version mit der Prüfung auf is_array() noch eine Lücke, denn ich habe nicht darauf geprüft, ob es (mindestens) zwei Array-Elemente sind im Ergebnis.
LG
Chris
Hallo Chris,
Du bist aber nicht "verkehrt herum"? *gg*
nicht dass ich wüsste. ;-)
Je expliziter eine Schreibweise ist, desto leichter ist sie nachvollziehbar. Oder behauptest Du etwa das Gegenteil?
Nicht exakt das Gegenteil, aber ich gehe in die Richtung.
Eine Schreibweise ist für mich umso leichter nachvollziehbar, je weniger Unnötiges sie enthält. Das läuft oft auf eine kompakte Schreibweise hinaus.
Es ging nicht darum, welche Schreibweise kompakter ist!
Nein, nicht unmittelbar. Indirekt schon. :-)
Die implizierte automatische Typumwandlung ist keinesfalls dauerfest (versionsfest).
Doch, das würde ich schon sagen. Der boolsche Wert eines Arrays wird generell auf true ausgewertet, und es ist nicht vernünftigerweise abzusehen, dass das in zukünftigen Versionen anders sein sollte.
Allerdings lässt auch meine Version mit der Prüfung auf is_array() noch eine Lücke, denn ich habe nicht darauf geprüft, ob es (mindestens) zwei Array-Elemente sind im Ergebnis.
Naja, da sollten wir mal die Kirche im Dorf lassen. Die Doku sagt eindeutig, dass getimagesize() entweder den boolschen Wert false oder ein Array aus 4 Elementen liefert. Auf irgendwas muss man sich ja auch verlassen können.
Ciao,
Martin
Hallo Rebecca.
list($width, $height) = getimagesize("thumbnails/somPicture.jpg");
Es funktioniert soweit.
Meine Frage nun: muss ich hierbei noch etwas beachten? Wie z.B. opendir ('thumbnails') oder closedir(...)?
Nein, warum sollte es? Du öffnest ja schließlich kein Verzeichnis sondern liest einfach nur die Bilddimensionen aus.
Sind diese Anweisungen erforderlich wenn ich nur die Größe eines Bildes herausfinden möchte?
Nein, dafür musst du schon filesize() nutzen, mit getimagesize kannst du nur die Dimensionen auslesen.
Einen schönen Sonntag noch.
Gruß, Ashura
Hi,
Meine Frage nun: muss ich hierbei noch etwas beachten?
Vorher überprüfen, ob die Dateigröße >=12 Bytes ist! Andernfalls schmiert PHP ggf. einfach ab.
Gruß, Cybaer