Domanda

utente del mio sito caricare le immagini che vengono utilizzati come avatar. Ho impostato una dimensione limite di upload di 2 MB. Alla maggior parte dei posti che richiedono solo le miniature. Ma gli utenti di caricare le immagini con risoluzioni molto più grande. I memorizzare questi file sul mio file system.

Come posso creare miniature e memorizzarle, invece di grandi file di dimensioni?

È stato utile?

Soluzione

A seconda della configurazione di installazione / server, avete diverse possibilità.

Direi che non ho quasi mai visto un server senza GD installato - per Imagick, la sua meno probabilità di essere installato di default: - (


Un'altra soluzione potrebbe essere quella di chiamare il rel="nofollow convertire riga di comando (si tratta con ImageMagick - in modo indipendente di qualsiasi estensione PHP) , usando qualcosa come exec di chiamarlo.

Advantage, con questo, sarebbe che non si sarebbe limitato da memory_limit, come il ridimensionamento verrebbe eseguita da uno strumento esterno - ma, ovviamente, significa anche che l'applicazione si baserà su uno strumento esterno, che non è sempre bello ...


Se necessario, ci sono un sacco di tutorial su GD; per esempio, quelli potrebbero interessarvi:

Altri suggerimenti

È possibile utilizzare il GD modulo o il modulo di ImageMagick per ridimensionare e ridurre eventuali immagini caricate.

Se google intorno per qualcosa come "PHP Image Resizer", troverete un sacco di esempi. Io tendo ad usare GD, come Ho un vecchio pezzo di codice calci in giro che funziona bene. Supponendo di avere un'immagine JPEG caricata noto trovato alla $srcImgPath, si potrebbe fare qualcosa di simile a quanto segue, dove $newWidth e $newHeight sono i nuovi formati di immagine che si desidera:

list($width, $height, $type) = getimagesize($srcImgPath);
$srcImg = imagecreatefromjpeg($srcImgPath);
if ($srcImg === false) return false;
$workImg = imagecreatetruecolor($newWidth,$newHeight);
imagecopyresampled($workImg,$srcImg,0,0,0,0,$newWidth,$newHeight,$width,$height);
imagejpeg($workImg,$newFilename,$quality);

funzionalizzare a seconda dei casi, e assicurarsi di specificare il $quality. È possibile astratto questo codice fuori per gestire GIF e PNG molto facilmente e.

Controlla la libreria GD, in particolare il imagecopyresized funzione

Solo una breve nota, se si va verso il basso il percorso GD, utilizzare imagecopyresampled, in quanto produce immagini più pulito in cerca. Con questo voglio dire che non sarà come granulosa e / o pixely.

link al manuale di PHP sulla funzione: http: // US2. php.net/manual/en/function.imagecopyresampled.php

Lo raccomando lo script timthumb.php. è solida roccia. http://www.darrenhoyt.com/2008/04 / 02 / timthumb-php-script-released /

Se avete installato Imagick nella configurazione di PHP. Poi v'è una funzione che fa questo. Imagick :: thumbnailImage ()

Se non si dispone di Imagick, poi la libreria GD sarà utile. Dal momento che hanno imagcopyresized ()

Non è Google AppEngine dotato di un sottoinsieme di PIL? C'è la funzione di 'ridimensionamento' che potrebbe essere l'uso ... e meglio di tutti, si stanno ottenendo una quota libera!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top