Skip to main content

Applicare il filtro Pixellate a una UIImage

iOS ha ereditato da OS X (oops… macOS) una ricchissima libreria di filtri ed effetti speciali per le immagini. Sono racchiusi tutti dentro il framework CoreImage e, oltre ad essere molto facili da utilizzare, sono stati studiati per offrire delle ottime performance. Infatti vengono eseguiti interamente sulla GPU (la cui architettura è perfetta per questo tipo di operazioni).

In questo articolo vedrete innanzitutto come applicare un filtro di pixellation.

Pixellation

Scaricate questa immagine da WikiMedia e salvatela sul Desktop.

Poi aprite il Playground di Xcode 8, assicuratevi che Project Navigator sulla sia sinistra sia visibile (CMD + 1) e trascinate l’immagine dentro la cartella Resources.

Xcode

Poi selezionati Playground e preparatevi a scrivere il seguente blocco di codice

Analizziamo ogni riga

1. L’immagine viene caricata dentro la costante mushroom

2. Convertiamo mushroom (che è una UIImage) in una CIImage.

3. Creiamo il filtro di tipo CIPixellated

4.  Impostiamo il parametro inputImage, si tratta dell’immagine che verrà data in input al filtro

5. Impostiamo il parametro inputScale, maggiore è questo valore, maggiore sarà la dimensione dei pixel dell’effetto finale (e quindi maggiore sarà il grado di distorsione dell’immagine).

6. Infine eseguiamo il filtro e trasformiamo il risultato in una nuova UIImage.

Ricordate che in playground potete visualizzare l’immagine contenuta in una variabile premendo il rettangolo che trovate sulla colonna di destra, sulla stessa riga della variabile.

Xcode Playground Anteprima

Ecco il risultato finale.

Se volete potete testare l’effetto su altre immagini: basta aggiungerle alla cartella Resources come abbiamo fatto con Mushroom.png e poi caricarle da codice in questo modo

Inoltre vi invito anche a modificare il parametro inputScale e vedere come cambia il risultato. Ecco alcuni esempi

 

Trainer • Developer • Writer

Luca Angeletti

Trainer • Developer • Writer

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *