Skip to main content

Introduzione

Laravel offre, tramite la facade Image, un’API fluida per l’elaborazione delle immagini. Resize, crop, encoding e salvataggio possono essere descritti in modo uniforme in tutto il framework. Internamente utilizza Intervention Image, supportando sia l’estensione PHP GD sia Imagick.
L’elaborazione delle immagini può consumare molta CPU e memoria. Per elaborazioni pesanti, non farla durante la richiesta HTTP: valuta di usare job in coda.
Questa funzionalità è disponibile da Laravel v13.20.0 in poi. Se usi una versione precedente, aggiorna il framework con composer update.

Installazione

Prima di usare l’elaborazione immagini, installa Intervention Image via Composer.
Verifica anche che sia installata l’estensione PHP GD o Imagick, in base al driver che intendi usare.

Configurazione

Il file di configurazione si trova in config/image.php. Se non esiste, pubblicalo con il comando Artisan.
Il driver di default si imposta nel file di configurazione o con la variabile d’ambiente IMAGE_DRIVER. Sono supportati gd e imagick.

Caricare un’immagine

La facade Image offre metodi per creare istanze di immagine da varie sorgenti. Il contenuto viene caricato in modo lazy: viene letto effettivamente solo quando serve elaborare l’immagine o produrre i byte.

File caricati

Per ottenere un’immagine caricata dalla richiesta usa il metodo image. Se il file non c’è restituisce null.
Per crearla da un’istanza UploadedFile usa fromUpload.
Sulle immagini create da upload, con il metodo file puoi recuperare il file originale.

File dallo storage

Per creare un’immagine da un file su disco filesystem usa fromStorage. Il primo argomento è il path, il secondo il nome del disco.
Puoi anche partire dal metodo image della facade Storage.

Altre sorgenti

Puoi creare un’immagine anche da byte, path locale, URL o Base64.

Elaborare l’immagine

Le istanze immagine sono immutabili. Ogni metodo restituisce una nuova istanza con la trasformazione aggiunta alla pipeline di elaborazione, così puoi concatenarli. Le trasformazioni vengono applicate nell’ordine in cui sono aggiunte alla pipeline e l’encoding avviene una sola volta alla fine.

Resize

Altre trasformazioni

Trasformazioni condizionali

L’immagine supporta il trait Conditionable, quindi puoi applicare trasformazioni condizionali con when / unless.

Encoding

Per default l’encoding usa il formato originale. Per convertire formato usa questi metodi.
Con quality imposti la qualità di output (1-100).
optimize è una scorciatoia per conversione di formato e qualità. Il default è WebP con qualità 70.
Puoi anche ottenere byte, Base64 o data URI.

Salvataggio

Con store salvi l’immagine su un disco filesystem. Laravel genera un nome file univoco e restituisce il path di salvataggio.
Per specificare il nome file usa storeAs.
Per salvare con visibilità public usa storePublicly / storePubliclyAs.
Se il salvataggio fallisce restituisce false.

Ottenere informazioni sull’immagine

Con mimeType, extension, dimensions, width, height recuperi le informazioni. Si riferiscono all’immagine dopo l’elaborazione (ad esempio, dopo cover(400, 400), width() restituisce 400).

Driver personalizzati

L’image manager di Laravel estende Illuminate\Support\Manager, quindi puoi registrare driver personalizzati con extend. Un driver personalizzato implementa Illuminate\Contracts\Image\Driver e nel metodo process riceve i byte dell’immagine originale e la pipeline, restituendo i byte elaborati.
La registrazione avviene nel metodo boot di un service provider.
Per usare un driver specifico su una singola immagine chiama using.

Trasformazioni personalizzate

Puoi definire trasformazioni personalizzate implementando Illuminate\Contracts\Image\Transformation.
L’handler si registra nel metodo boot del service provider.
Dopo la registrazione, applicala con transform.
Ultima modifica il 2 agosto 2026