...
✅ Notizie, temi, plugin WEB e WordPress. Qui condividiamo suggerimenti e le migliori soluzioni per siti web.

Carica e comprimi più immagini in PHP

152

Recentemente uno dei nostri lettori ha chiesto come caricare e comprimere più immagini in PHP. Esistono alcuni scenari in cui è necessario consentire agli utenti di caricare più immagini. È sempre buona norma ottimizzare le immagini al momento del caricamento. In questo articolo, studiamo il caricamento di più immagini e come comprimere le immagini durante il processo di caricamento.

Perché abbiamo bisogno di ridurre le dimensioni del file immagine?

Senza dubbio, le immagini giocano un ruolo importante nel tuo sito web. Immagini accattivanti attirano l’attenzione dei lettori e trascorrono più tempo sul sito web. Ma allo stesso tempo, le immagini di grandi dimensioni rallentano il tuo sito web. Poiché richiede più larghezza di banda, il tuo sito Web impiega più tempo per caricare le pagine Web. I proprietari del sito devono prestare attenzione a ridurre le dimensioni del file di immagine e utilizzare il miglior strumento di compressione delle immagini per questo.

Ti mostrerò 2 modi per comprimere le immagini: TinyPNG e il pacchetto craftsweb /image-optimizer.

TinyPNG è uno dei popolari servizi di compressione di immagini sul web. Questo servizio consente di comprimere gratuitamente 500 immagini al mese tramite le proprie API. Per più di 500 immagini, devi pagarle.

Se devi ottimizzare più di 500 immagini al mese e non vuoi pagare, usa il pacchetto "artisansweb/image-optimizer". Questo pacchetto utilizza il servizio reSmush.it per l’ottimizzazione delle immagini.

Consiglierei di provare entrambe le soluzioni, confrontare l’output e scegliere quella adatta a te.

Detto questo, diamo un’occhiata a come comprimere le immagini dopo averle caricate.

Iniziare con TinyPNG

Per iniziare, devi ottenere una chiave API da TinyPNG. Fai clic qui per ottenere la tua chiave API. Devi solo inserire il tuo nome e indirizzo e-mail e riceverai l’e-mail per la tua chiave.

Carica e comprimi più immagini in PHP

Una volta ottenuta la chiave sviluppatore, installa una libreria PHP fornita da TinyPNG. Dovresti avere Composer installato sul sistema per installare la libreria. Apri il terminale nella directory principale del tuo progetto ed esegui il comando:

composer require tinify/tinify

Come comprimere le immagini usando TinyPNG

Come accennato nel titolo di questo articolo, vedremo come caricare e comprimere più immagini. Per questo, abbiamo bisogno di creare un modulo HTML che abbia input di file per sfogliare più immagini. Crea index.phpe inserisci il codice qui sotto in esso.

index.php

<form method="post" enctype="multipart/form-data" action="process_images.php">
    <p>
        <label>Upload Images</label>
        <input type="file" name="images[]" accept="image/*" multiple>
    </p>
    <button type="submit" name="submit">Submit</button>
</form>

All’input del file ho dato un nome come immagini[]. Questo perché sul lato server abbiamo bisogno di una serie di file poiché l’utente esplorerà più immagini.

Una volta sfogliate le immagini e premuto il pulsante di invio, i dati del modulo verranno inviati al file process_images.php. Questo è il file in cui dobbiamo scrivere un codice per caricare e comprimere le immagini.

process_images.php

<?php
// Increase PHP execution time
set_time_limit(0);
 
require_once("vendor/autoload.php");
TinifysetKey("YOUR_API_KEY");
 
if (isset($_POST['submit'])) {
    $supported_images = array('image/gif', 'image/jpg', 'image/jpeg', 'image/png');
 
    if (!file_exists(getcwd(). '/uploads')) {
        mkdir(getcwd(). '/uploads', 0777);
    }
  
    foreach($_FILES['images']['name'] as $key=>$val) {
        $file_name = $_FILES['images']['name'][$key];
  
        // get file extension
        $ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));
  
        // get filename without extension
        $filenamewithoutextension = pathinfo($file_name, PATHINFO_FILENAME);
  
        if (in_array($_FILES['images']['type'][$key], $supported_images)) {
            $filename_to_store = $filenamewithoutextension.'_'.time().'.' .$ext;
            move_uploaded_file($_FILES['images']['tmp_name'][$key], getcwd().'/uploads/'.$filename_to_store);
  
            // optimize image using TinyPNG
            try {
                $source = TinifyfromFile(getcwd().'/uploads/'.$filename_to_store);
                $source->toFile(getcwd().'/uploads/'.$filename_to_store);
            } catch(Exception $e) {
                echo $e->getMessage();
                exit;
            }
        }
    }
    echo "Files uploaded successfully.";
}

Assicurati di sostituire il segnaposto con la tua chiave API effettiva. Nel codice sopra, stiamo generando un nome file univoco aggiungendovi il tempo. Una volta caricata un’immagine sul server, inviamo l’immagine all’API TinyPNG per l’ottimizzazione. In cambio, otteniamo la versione compressa dell’immagine che memorizziamo nello stesso posto e con lo stesso nome di file.

Comprimi le immagini utilizzando il pacchetto craftsweb/image-optimizer

Ho sviluppato il pacchetto Image Optimizer. Questo pacchetto utilizza il servizio reSmush.it sotto il cofano per l’ottimizzazione delle immagini. Se stai cercando un servizio gratuito, prova questo pacchetto. Finora reSmush.it ha ottimizzato miliardi di immagini. Questo pacchetto non richiede di fornire alcuna chiave o registrazione. Basta collegarlo e il gioco è fatto.

Per iniziare con il pacchetto Image Optimizer, installalo utilizzando il comando:

composer require artisansweb/image-optimizer

Successivamente, il codice in process_image.phpverrà modificato come segue.

<?php
// Increase PHP execution time
set_time_limit(0);
 
require_once("vendor/autoload.php");
 
use ArtisansWebOptimizer;
 
if (isset($_POST['submit'])) {
    $supported_images = array('image/gif', 'image/jpg', 'image/jpeg', 'image/png');
 
    if (!file_exists(getcwd(). '/uploads')) {
        mkdir(getcwd(). '/uploads', 0777);
    }
  
    foreach($_FILES['images']['name'] as $key=>$val) {
        $file_name = $_FILES['images']['name'][$key];
  
        // get file extension
        $ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));
  
        // get filename without extension
        $filenamewithoutextension = pathinfo($file_name, PATHINFO_FILENAME);
  
        if (in_array($_FILES['images']['type'][$key], $supported_images)) {
            $filename_to_store = $filenamewithoutextension.'_'.time().'.' .$ext;
            move_uploaded_file($_FILES['images']['tmp_name'][$key], getcwd().'/uploads/'.$filename_to_store);
  
            // optimize image
            try {
                $img = new Optimizer();
                $source = getcwd().'/uploads/'.$filename_to_store;
                $img->optimize($source);
 
            } catch(Exception $e) {
                echo $e->getMessage();
                exit;
            }
        }
    }
    echo "Files uploaded successfully.";
}

Spero che tu capisca come caricare e comprimere più immagini in PHP. Mi piacerebbe sentire i tuoi pensieri e suggerimenti nella sezione commenti qui sotto.

articoli Correlati

Fonte di registrazione: artisansweb.net

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More