2010-07-26 19 views
6

Un modo per migliorare il caricamento della pagina è specificare le dimensioni dell'immagine (larghezza di larghezza). In PHP questo può essere fatto con getimagesize(), tuttavia posso immaginare che sarebbe piuttosto lento da eseguire se si hanno molte immagini.il modo più rapido per recuperare dinamicamente le dimensioni dell'immagine

Qual è il modo migliore per ottenere dinamicamente le dimensioni di molte immagini con un effetto minimo sul caricamento della pagina. Stiamo parlando di oltre 50 immagini.

+0

Credete è lento, o lo hai effettivamente testato? – Maerlyn

+0

Non penso che acceleri effettivamente il sito, ma evita che la pagina cambi forma mentre le immagini si stanno caricando (sembra più veloce). In entrambi i casi si tratta di ottenere dimensioni più velocemente rispetto a eseguire getimagesize(), che ha molti altri usi. – jerclarke

risposta

7

Ho appena testato con 55 pezzi di immagini 5+ MB:

getImageGeometry di Imagemagick preso 5.3 seconds (perché dopo ogni file è necessario ricreare l'oggetto imagick), mentre getimagesize andato attraverso le immagini in 0.032 seconds. Quest'ultimo è più che accettabile.

In caso contrario, memorizzare le dimensioni nel database.

MODIFICA: Inoltre, se si ottengono i file tramite TCPIP, questo rallenta notevolmente il processo. Quindi, se si chiama in questo modo:

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

Invece di

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

si ottiene qualche sovraccarico della rete.

Inoltre, se queste immagini hanno costantemente dati EXIF ​​(realizzati con una fotocamera digitale), è possibile utilizzare le funzioni PHP exif_, ad esempio exif_read_data.

Domanda: quale versione di PHP stai usando? Le versioni precedenti di 4.x avevano problemi minori riguardo a getimagesize su determinati filesystem.

2

Sì, getimagesize() può essere lento in particolare su immagini di grandi dimensioni e dipende anche dal server. Se si dispone di una grande raccolta di immagini e si desidera mostrare la risoluzione di ciascuna immagine sulla pagina, probabilmente utilizzerei un database per questo. Ogni volta che viene caricata o modificata un'immagine, viene utilizzato getimagesize().

Ciò renderebbe anche possibile creare una raccolta di immagini più versatile, in quanto è possibile utilizzare le istruzioni SQL per raggruppare le immagini come desiderato. Ad esempio "mostra immagini da oggi", "mostra immagini della scorsa settimana" e così via.

Se la raccolta è piccola e un database di immagini non è un'opzione, è innanzitutto necessario provare come il sito esegue con un semplice getimagesize().

0

Credo che non si stia parlando di icone e immagini di design, piuttosto si tratta di immagini dinamiche caricate sul server da utenti ed editori.

Se questo è il caso, mi piacerebbe ridimensionare le immagini caricate quando vengono caricati e conoscono le loro dimensioni sempre

0

il modo più veloce che conosco per le dimensioni che ottengono immagini

https://github.com/tommoor/fastimage

+0

è passato molto tempo, ma hai anche una versione PHP del codice? – bcbishop

+0

Per quanto ne so funziona con tutte le versioni di php. Lo uso con php 5.4 –

+0

scusa sono confuso, questo è il codice rubino, come può funzionare con php? hai un esempio che posso usare nel mio codice php? – bcbishop

Problemi correlati