CodeGym /Corsi /Python SELF IT /Ritaglio e rotazione delle immagini per la preparazione d...

Ritaglio e rotazione delle immagini per la preparazione dei contenuti

Python SELF IT
Livello 45 , Lezione 2
Disponibile

1. Ritaglio delle immagini

Concetto di ritaglio e il suo utilizzo

Bene, iniziamo a capire come ritagliare e ruotare le immagini. Questa abilità ti sarà utile in diversi tipi di progetti: dalla preparazione di grafiche per siti web alla creazione di contenuti per i social media.

Ritagliare un'immagine è come tagliare i bordi inutili di una foto per concentrarti sull'oggetto principale. Immagina di aver scattato una splendida foto di un tramonto, ma ai bordi ci sono accidentalmente persone curiose. Il ritaglio ti aiuterà a liberarti di loro (virtualmente, ovviamente) senza problemi!

Metodo crop()

Il metodo crop() accetta le coordinate di un'area rettangolare che vuoi ritagliare dall'immagine. Le coordinate vengono specificate come quattro valori: (sinistra, superiore, destra, inferiore).


# Ritaglio di un'immagine
cropped_image = image.crop((100, 100, 400, 400))
 # Salvataggio dell'immagine ritagliata
cropped_image.save("cropped_example.jpg")
        

In questo esempio, l'immagine sarà ritagliata fino all'area con l'angolo in alto a sinistra in (100, 100) e l'angolo in basso a destra in (400, 400). Questo metodo crea una nuova immagine dalla parte specificata dell'immagine originale.

Ritaglio dinamico basato sulle dimensioni dell'immagine

Se vuoi ritagliare l'immagine al centro, puoi calcolare le coordinate di ritaglio basandoti sulle sue dimensioni:


width, height = image.size
left = (width - 200) / 2
top = (height - 200) / 2
right = (width + 200) / 2
bottom = (height + 200) / 2

center_cropped_image = image.crop((left, top, right, bottom))
center_cropped_image.save("center_cropped_example.jpg")
        

Questo codice ritaglia la parte centrale dell'immagine di dimensioni 200x200 pixel. Il calcolo delle coordinate garantisce che l'area ritagliata sia centrata nell'immagine.

2. Rotazione dell'immagine

La rotazione dell'immagine consente di modificarne l'orientamento, particolarmente utile se la foto è stata scattata con l'orientamento sbagliato o per ottenere un effetto artistico.

Metodo rotate()

Il metodo rotate() ruota l'immagine di un angolo specificato in senso antiorario. L'angolo è espresso in gradi e il metodo crea una nuova immagine ruotata.


# Rotazione dell'immagine di 90 gradi in senso antiorario
rotated_image = image.rotate(90)
rotated_image.save("rotated_90_example.jpg")
        

In questo esempio, l'immagine sarà ruotata di 90 gradi in senso antiorario. Puoi anche specificare un altro angolo di rotazione (ad esempio 45, 180 o 270 gradi) per ottenere il risultato desiderato.

Gestione dei bordi bianchi durante la rotazione

Per impostazione predefinita, rotate() aggiunge bordi bianchi (o trasparenti, se utilizzi il modalità RGBA) ai bordi dell'immagine per preservarne l'intero contenuto. Se vuoi che l'immagine riempia l'intero frame senza bordi, usa il parametro expand=True.


# Rotazione con espansione dell'immagine in modo che riempia l'intero frame
rotated_expanded_image = image.rotate(45, expand=True)
rotated_expanded_image.save("rotated_expanded_example.jpg")
        

In questo caso, Pillow aumenterà le dimensioni dell'immagine per includere tutto il suo contenuto, utile per rotazioni ad angoli non standard (ad esempio, 45 gradi).

3. Riflesso dell'immagine

Il riflesso consente di capovolgere l'immagine orizzontalmente o verticalmente. È utile quando devi cambiare la direzione dell'oggetto in una foto o creare un effetto simmetrico.

Metodo transpose()

Il metodo transpose() viene utilizzato per il riflesso e supporta i seguenti parametri:

  • Image.FLIP_LEFT_RIGHT: Riflesso orizzontale.
  • Image.FLIP_TOP_BOTTOM: Riflesso verticale.

# Riflesso orizzontale
flipped_horizontal = image.transpose(Image.FLIP_LEFT_RIGHT)
flipped_horizontal.save("flipped_horizontal_example.jpg")

# Riflesso verticale
flipped_vertical = image.transpose(Image.FLIP_TOP_BOTTOM)
flipped_vertical.save("flipped_vertical_example.jpg")
        

Questi comandi capovolgono l'immagine orizzontalmente e verticalmente, da utilizzare per effetti diversi o per correggere l'orientamento.

Esempi pratici di ritaglio, rotazione e riflesso

  1. Focalizzazione su un'area specifica dell'immagine: Il ritaglio consente di evidenziare una parte specifica dell'immagine, utile per creare ritratti, eliminare dettagli superflui e preparare immagini per i social media o siti web.
  2. Correzione dell'orientamento dell'immagine: La rotazione è utilizzata per correggere l'orientamento di una foto, specialmente se il dispositivo l'ha scattata con l'orientamento sbagliato. Un esempio potrebbe essere la correzione di un'immagine scattata in modalità orizzontale per la pubblicazione in modalità verticale.
  3. Creazione di effetti simmetrici: Il riflesso è spesso utilizzato nel design per creare immagini simmetriche, effetti visivi interessanti e migliorare la composizione.

4. Errori comuni e come evitarli

Quando lavori con Pillow, a volte possono capitare errori che probabilmente incontrerà ogni principiante. Uno di questi è il tentativo di ritagliare un'immagine al di fuori dei suoi limiti reali. Controlla sempre le dimensioni dell'immagine e specifica le coordinate di ritaglio entro tali limiti.

Un altro dettaglio: durante la rotazione, l'immagine potrebbe apparire tagliata se utilizzi il metodo `rotate` senza impostazioni aggiuntive. Questo succede perché le dimensioni dell'immagine cambiano durante la rotazione. Per evitarlo, usa il parametro expand=True, che adatta automaticamente le dimensioni:


# Ruotare l'immagine di 45 gradi con espansione per evitare il taglio degli angoli
rotated_image = image.rotate(45, expand=True)
rotated_image.save("rotated_expanded.jpg")
        
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION