Ottimizzazione delle immagini utilizzando il pacchetto di ottimizzazione delle immagini/web di artigiani
Sono 4 anni che gestisco questo blog. Insieme a questo blog, gestisco anche un canale YouTube in cui condivido video che mostrano come implementare i miei articoli.
Credo nell’open source. Sul mio sito web non gestisco alcun abbonamento a pagamento, vendo ebook o corsi. Mi piace mantenere le risorse libere. Con questo in mente, ho creato il mio primo pacchetto GitHub craftsweb/image-optimizer che ha il compito di ottimizzare le immagini per il tuo sito web.
Ho scritto alcuni articoli sull’ottimizzazione delle immagini in passato. Finora TinyPNG era il mio preferito e lo è ancora. Ma la limitazione con TinyPNG è che consentono di ottimizzare 500 immagini gratuite al mese. Oltre le 500 immagini, verrà addebitato un costo per immagine.
Alcuni degli articoli precedenti sull’ottimizzazione delle immagini:
Esistono anche altri pacchetti, ma richiedono l’installazione di software come JpegOptim, Optipng, ecc. Sulla nostra macchina. Anche questa non è una soluzione praticabile.
Nell’ultimo anno, stavo lavorando al progetto di un cliente che ha migliaia di immagini necessarie per la compressione. Cercavamo un servizio open source ed efficiente che potesse fare il nostro lavoro. Poi siamo venuti a conoscenza di reSmush.it che è un servizio completamente gratuito per l’ottimizzazione delle immagini.
Anche se ho scritto un articolo su reSmush.it sento di poterne creare un pacchetto GitHub e l’ho fatto. Se leggi il mio articolo su reSmush.it, scoprirai che è necessario aggiungere circa 25-30 righe di codice. Ma se scegli il pacchetto, può essere fatto in 5-6 righe.
Detto questo, discutiamo di come installare e utilizzare il artisansweb/image-optimizer
pacchetto.
Ottimizzazione delle immagini tramite PHP
All’inizio, è necessario installare il pacchetto utilizzando il Composer eseguendo il comando:
composer require artisansweb/image-optimizer
Al momento dell’installazione del pacchetto, è possibile ottimizzare l’immagine utilizzando il codice sottostante.
<?php
require_once "vendor/autoload.php";
use ArtisansWebOptimizer;
$img = new Optimizer();
$source = 'SOURCE_PATH_OF_IMAGE';
$img->optimize($source);
Qui, devi passare il percorso completo della directory dell’immagine di origine e l’immagine di origine viene ottimizzata automaticamente. A volte, è necessario conservare l’immagine originale e archiviare la versione ottimizzata in un’altra directory. In tal caso, puoi utilizzare un secondo parametro per la destinazione.
<?php
$source = 'SOURCE_PATH_OF_IMAGE';
$destination = 'DESTINATION_PATH_OF_IMAGE';
$img->optimize($source, $destination);
Usando il codice sopra, puoi ottimizzare le tue immagini che si trovano nella tua directory. Tuttavia, consiglierei di ottimizzare l’immagine durante il caricamento in modo da non dover eseguire attività di ottimizzazione separatamente.
L’utente può ottimizzare l’immagine durante il caricamento come segue.
<?php
require_once "vendor/autoload.php";
use ArtisansWebOptimizer;
if (isset($_POST['submit'])) {
$img = new Optimizer();
move_uploaded_file($_FILES['file']['tmp_name'], 'images/'.$_FILES['file']['name']);
$img->optimize('images/'.$_FILES['file']['name']);
}
?>
<form method="post" enctype="multipart/form-data">
<input type="file" name="file" />
<input type="submit" name="submit" value="Submit" />
</form>
Sebbene reSmush.it abbia compresso finora miliardi di immagini, è possibile che il loro servizio sia inattivo per qualche motivo. Ho gestito questo scenario nel pacchetto. Per qualche ragione, se il pacchetto non ottiene la versione ottimizzata da reSmush.it, come fallback utilizza i metodi nativi di PHP come imagecreatefromjpeg, imagecreatefrompng, imagecreatefromgif, imagejpeg per l’ottimizzazione.
Ci sono diverse nuove funzionalità in corso che aggiungerò nel pacchetto e lo rilascerò presto.
Sarò felice se usi il pacchetto e fammi sapere come funziona nella sezione commenti qui sotto. Per favore condividi il tuo feedback in modo che insieme possiamo migliorare questo pacchetto che aiuterà la comunità.