2010-07-26 15 views
6

Eine Möglichkeit, das Laden von Seiten zu verbessern, ist die Festlegung von Bildgrößen (maximale Breite). In PHP kann dies mit getimagesize() gemacht werden, aber ich kann mir vorstellen, dass dies ziemlich langsam wäre, wenn Sie viele Bilder haben.schnellste Methode zum dynamischen Abrufen von Bildabmessungen

Was ist der beste Weg, dynamisch Bildabmessungen vieler Bilder mit minimalen Auswirkungen auf das Laden der Seite zu erhalten. Wir sprechen über 50 Bilder.

+0

Sie Sie sich vorstellen, es langsam zu sein, oder hast du es tatsächlich getestet? – Maerlyn

+0

Ich glaube nicht, dass es tatsächlich beschleunigt die Website, aber vermeidet die Seite ändern Form beim Laden von Bildern (fühlt sich schneller). In beiden Fällen geht es darum, Dimensionen schneller zu erhalten als mit getimagesize(), das viele andere Anwendungen bietet. – jerclarke

Antwort

7

Ich habe gerade mit 55 PC von 5+ MB Bilder getestet:

ImageMagicks getImageGeometry nahm 5.3 seconds (weil nach jeder Datei müssen Sie das imagick Objekt neu), während getimagesize durch die Bilder gingen in 0.032 seconds. Letzteres ist mehr als akzeptabel.

Wenn nicht, speichern Sie die Dimensionen in der Datenbank.

EDIT: Auch wenn Sie die Dateien über TCPIP erhalten, verlangsamt das den Prozess erheblich. Also, wenn Sie es nennen diese Art und Weise:

getimagesize('http://www.blabla.com/pic.jpg');

Statt

getimagesize('localdir/hereiam/pic.jpg');

Sie einige Netzwerk-Overhead bekommen.

Plus, wenn diese Bilder konsistent EXIF-Daten (mit einer Digitalkamera) haben, dann können Sie die PHP exif_ Funktionen, wie zum Beispiel: exif_read_data.

Frage: Welche PHP-Version verwenden Sie? Ältere 4.x-Versionen hatten kleinere Probleme hinsichtlich der getimagesize auf bestimmten Dateisystemen.

2

Ja, getimagesize() kann besonders bei großen Bildern langsam sein, und es ist auch abhängig vom Server. Wenn Sie eine große Bildersammlung haben und die Auflösung jedes Bildes auf der Seite anzeigen möchten, würde ich wahrscheinlich eine Datenbank dafür verwenden. Immer wenn ein Bild hochgeladen oder geändert wird, wird getimagesize() verwendet.

Dies würde auch ermöglichen, eine vielseitigere Bildsammlung zu erstellen, da Sie SQL-Anweisungen verwenden können, um Bilder nach Belieben zu gruppieren. Zum Beispiel "zeige Bilder von heute", "zeige Bilder von letzter Woche" und so weiter.

Wenn die Sammlung klein ist und eine Bilddatenbank keine Option ist, sollten Sie zuerst versuchen, wie Ihre Website mit einer einfachen getimagesize() Leistung funktioniert.

0

Ich glaube, Sie sprechen nicht über Symbole und Design-Bilder, sondern Sie sprechen über dynamische Bilder von Benutzern und Editoren auf den Server hochgeladen.

Wenn das der Fall ist, würde ich die hochgeladenen Bilder Größe ändern, wenn sie hochgeladen werden und wissen, dass ihre Größe immer

0

der schnellste Weg, ich weiß, für immer Bilder Größe

https://github.com/tommoor/fastimage

+0

es ist eine lange Zeit, aber haben Sie auch eine PHP-Version des Codes? – bcbishop

+0

Soweit ich weiß funktioniert es mit allen PHP-Versionen. Ich verwende es mit PHP 5.4 –

+0

Entschuldigung, ich bin verwirrt, das ist Ruby-Code, wie kann es mit PHP arbeiten? hast du ein beispiel, dass ich es in meinem php code verwenden kann? – bcbishop

Verwandte Themen