CodeGym /Corso Java /Python SELF IT /Unione e combinazione delle immagini

Unione e combinazione delle immagini

Python SELF IT
Livello 45 , Lezione 3
Disponibile

1. Preparazione

Caricamento delle immagini per la combinazione

Prima di lavorare con più immagini, è necessario caricarle. Pillow permette di lavorare con la maggior parte dei formati di immagine più popolari, come JPEG, PNG, BMP e GIF.

Python

from PIL import Image

# Caricamento delle immagini
background = Image.open("background.jpg")
foreground = Image.open("foreground.png")

Qui carichiamo due immagini: uno sfondo e una per la sovrapposizione. È importante ricordare che per alcuni metodi entrambe le immagini devono avere le stesse dimensioni.

2. Sovrapposizione delle immagini

Metodo paste()

Il metodo paste() consente di inserire un'immagine sopra un'altra in coordinate specificate. Questo metodo è utile se devi sovrapporre un'immagine sopra un'altra o creare un effetto collage.

Python

# Ridimensionare il primo piano per adattarsi alle dimensioni dello sfondo
foreground = foreground.resize(background.size)

# Sovrapporre l'immagine sullo sfondo
background.paste(foreground, (50, 50))  # Inserire il foreground nelle coordinate (50, 50)

# Salvare il risultato
background.save("pasted_image.jpg")

Qui l'immagine foreground viene inserita su background con il punto iniziale di inserimento (50, 50). Se il primo piano esce dai bordi dello sfondo, verrà ritagliato parzialmente.

Uso della maschera con paste()

Il metodo paste() supporta anche le maschere, che consentono di sovrapporre un'immagine parzialmente, mantenendo le sue aree trasparenti. La maschera deve essere in modalità L (scala di grigi) o RGBA.

Python

# Creazione di una maschera
mask = Image.open("mask.png").convert("L")  # Convertiamo la maschera in scala di grigi

# Inserire immagine con una maschera
background.paste(foreground, (50, 50), mask=mask)
background.save("pasted_with_mask.jpg")

La maschera mask.png definisce quali parti dell'immagine foreground saranno visibili, consentendo di sovrapporre accuratamente un'immagine all'altra.

3. Fusione delle immagini

Metodo blend()

Il metodo blend() consente di fondere due immagini con una trasparenza specificata. Questo metodo crea un nuovo oggetto immagine che rappresenta la fusione delle due immagini originali. Per utilizzare blend(), entrambe le immagini devono avere le stesse dimensioni.

Fusione semplice di immagini

Python

# Ridimensionare le immagini alle stesse dimensioni
background = background.resize((500, 500))
foreground = foreground.resize((500, 500))

# Fusione delle immagini con coefficiente di trasparenza
blended_image = Image.blend(background, foreground, alpha=0.5)

# Salvare il risultato
blended_image.save("blended_image.jpg")

Il parametro alpha determina il grado di trasparenza dell'immagine foreground. Se alpha = 0.5, le immagini si fondono in proporzione uguale. Un valore di alpha = 0.0 rende l'immagine foreground completamente trasparente (visibile solo lo sfondo), mentre alpha = 1.0 rende l'immagine di sfondo completamente trasparente (visibile solo il primo piano).

4. Composizione delle immagini con maschera

Metodo composite()

Il metodo composite() permette di unire due immagini basandosi su una maschera che definisce quali parti di quale immagine saranno visibili. Questo metodo è molto utile per creare composizioni complesse e collocazioni precise di un'immagine sopra un'altra.

Esempio: Utilizzo di composite() per combinare immagini

Python

# Assicuriamoci che entrambe le immagini e la maschera abbiano le stesse dimensioni
background = background.resize((500, 500))
foreground = foreground.resize((500, 500))
mask = mask.resize((500, 500))

# Creazione di una composizione con maschera
composited_image = Image.composite(foreground, background, mask)

# Salvare l'immagine
composited_image.save("composited_image.jpg")

La maschera definisce quali parti di foreground e background saranno visibili nell'immagine finale. Le aree bianche della maschera rendono visibile il foreground, quelle nere il background.

5. Esempi

Esempio di utilizzo combinato dei metodi paste(), blend() e composite()

Ora combineremo questi metodi per creare una composizione più complessa. Supponiamo di avere un'immagine di sfondo, un'immagine con trasparenza parziale e una maschera.

Python

from PIL import Image

# Caricamento delle immagini
background = Image.open("background.jpg").resize((500, 500))
foreground = Image.open("foreground.png").resize((500, 500))
mask = Image.open("mask.png").convert("L").resize((500, 500))

# 1. Fondiamo lo sfondo e il primo piano con trasparenza parziale
blended_image = Image.blend(background, foreground, alpha=0.3)

# 2. Sovrapposizione con maschera sull'immagine finale
final_composite = Image.composite(foreground, blended_image, mask)

# Salvare il risultato finale
final_composite.save("final_composition.jpg")

Questo esempio mostra come è possibile applicare consecutivamente blend() e composite() per creare composizioni multilivello.

Applicazioni pratiche dei metodi di unione immagini

  1. Creazione di collage: Il metodo paste() consente di aggiungere più immagini su una tela, creando collage e mosaici.
  2. Effetti di sovrapposizione e trasparenza: Il metodo blend() permette di creare transizioni morbide tra immagini, ideale per il fotoritocco e la creazione di effetti.
  3. Composizioni con maschere: Il metodo composite() permette di controllare precisamente quali parti di un'immagine saranno visibili, creando composizioni complesse con l'uso di maschere.

Confronto tra i metodi

Metodo Descrizione Applicazione
paste() Sovrapposizione di un'immagine su un'altra Collage, posizionamento di immagini
blend() Fusione di due immagini con trasparenza definita Transizioni morbide ed effetti di sovrapposizione
composite() Unione di due immagini basandosi su una maschera Composizioni complesse e sovrapposizioni precise
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION