Timbrare un’ immagine con un altra immagine [VB.net]
Eccoci di nuovo con un altro articolo sulla programmazione vb.net dedicata alle immagini . Oggi realizzeremo un semplice software per “timbrare” delle immagini con un logo o meglio crearemo un software per sovrapporre ad un’ immagine selezionata un’altra immagine di dimensione piu’ piccola come per esempio un logo .
Il codice in questione è il seguente, proviamo ad analizzarlo :
Public Class Form1 Function timbra(ByRef img As Bitmap, ByRef timbro As Bitmap) As Bitmap Dim eg As Graphics timbra = New Bitmap(img.Width, img.Height) eg = Graphics.FromImage(timbra) eg.DrawImage(img, New Point(0, 0)) eg.DrawImage(timbro, New Point((img.Width - timbro.Width) - 20, (img.Height - timbro.Height) - 20)) End Function Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim timbro As Bitmap = New Bitmap("c:\tmp\timbro.png") Dim immagine As Bitmap = New Bitmap("c:\tmp\1.gif") Dim imgTimbrata As Bitmap = timbra(immagine, timbro) imgTimbrata.Save("c:\tmp\1t.jpg", Drawing.Imaging.ImageFormat.Jpeg) End Sub End Class
La parte piu’ importante è la funzione Timbra la quale accetta due parametri di tipo bitmap e restituisce la nuova immagine modificata . Il primo parametro è l’immagine da timbrare mentre il secondo è il timbro da usare .
Function timbra(ByRef img As Bitmap, ByRef timbro As Bitmap) As Bitmap Dim eg As Graphics
Subito dopo la definizione della funzione , dichiariamo la variabile eg di tipo grapich, essa come abbiamo visto in un articolo precedente ( classe grapich ) si occupa della creazione e della modifica di immagini.
timbra = New Bitmap(img.Width, img.Height)Timbra , la variabile di tipo bitmap , verrà restituita quando il codice della funzione sarà eseguito. Con questo pezzo di codice invochiamo il costruttore bitmap e dichiariamo le dimensioni della nuova immagine.
eg = Graphics.FromImage(timbra)
Con Graphics.FromImage(timbra) passiamo il controllo dell’immagine timbra all’istanza della classe graphic eg .
eg.DrawImage(img, New Point(0, 0)) eg.DrawImage(timbro, New Point((img.Width - timbro.Width) - 20, (img.Height - timbro.Height) - 20))
Questa è la parte piu’ importante del codice e per capirla bene dovete sapere che DrawImage serve per copiare tutti i px di un immagine su un’altra immagine . La funzione , accetta due parametri, il primo parametro è l’immagine da copiare mentre il secondo sono le cordinate, x e y, dove incollare l’immagine .
Con queste due righe di codice non facciamo altro che duplicare l’immagine da timbrare e inserire l’immagine timbro in basso a destra .