Differenze tra le versioni di "Fondere due immagini in una sola"

Da Gambas-it.org - Wikipedia.
 
(11 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
  ''<Font Color= #006400>' Gambas class file''</font>
+
Viene di seguito mostrato un codice per fondere due immagini in una sola.
 +
  Public Sub Button1_Click()
 
   
 
   
+
  Dim im1, im2 As Image
'''Public''' Sub Button1_Click()
+
 
+
  <Font Color=gray>' ''Viene caricata la prima immagine:''</font>
Dim x, c, b As New Image
+
   im1 = Image.Load("<Font Color=darkgreen>''/percorso/del/primo/file/immagine''</font>")
Dim a As New Picture
 
 
 
  ''<Font Color= #006400>' viene caricata la prima immagine:''</font>
 
   c = c.Load("Immagine1.gif")
 
 
 
''<Font Color= #006400>' viene resa manipolabile:''</font>
 
  paint.Begin(c)
 
''<Font Color= #006400>' viene ruotata specularmente sull'asse verticale:''</font>
 
  c.Mirror(True, False)
 
''<Font Color= #006400>' viene salvata:''</font>
 
  c.Save("/tmp/nuovoFile.png")
 
 
 
''<Font Color= #006400>' viene caricata la seconda immagine da fondere con la prima.
 
' Si sceglie il formato .png, se l'immagine aveva lo sfondo “trasparente”,
 
' poiché questo è l'unico formato disponibile a conservare la trasparenza del fondo:''</font>
 
  x = x.Load("/tmp/nuovoFile.png")
 
''<Font Color= #006400>' viene resa manipolabile:''</font>
 
  paint.Begin(x)
 
 
''<Font Color= #006400>' viene caricata la seconda immagine da fondere con la prima.''</font>
 
  b = b.Load("Immagine2.png")
 
 
    
 
    
  ''<Font Color= #006400>' viene inserita (e quindi fusa insieme) la seconda immagine all'interno della prima:''</font>
+
  <Font Color=gray>' ''Viene caricata la seconda immagine:''</font>
   paint.DrawImage(b, 100, 200, 100, 50)
+
   im2 = Image.Load("<Font Color=darkgreen>''/percorso/del/secondo/file/immagine''</font>")
''<Font Color= #006400>' ...viene inserito anche del testo:''</font>
 
  paint.DrawText("Testo qualsiasi", 10, 10)
 
''<Font Color= #006400>' viene ruotata specularmente sull'asse orizzontale:''</font>
 
  x.Mirror(False, True)
 
 
    
 
    
  ''<Font Color= #006400> ' la prima immagine (ormai fusa con la seconda) viene trasformata in una Picture...''</font>
+
  <Font Color=gray>' ''La prima immagine viene resa manipolabile con la Classe "Paint":''</font>
   a = x.Picture
+
   With Paint
 +
    .Begin(im1)
 +
<Font Color=gray>' ''Disegna la seconda immagine - senza ridimensionamento - "sopra" la prima immagine:''</font>
 +
    .DrawImage(im2, 0, 0, im2.W, im2.H)
 +
    .End
 +
  End With 
 
    
 
    
  ''<Font Color= #006400> ' ...e mostrata sul Form in una PictureBox:''</font>
+
  <Font Color=gray>' ''Mostra il risultato in una "PictureBox":''</font>
   PictureBox1.Picture = a
+
   PictureBox1.Image = im1
 
   
 
   
  '''End'''
+
  End
 +
Va precisato che la seconda immagine si ''sovrappone'' alla prima immagine, laddove essa ha pixel <SPAN Style="text-decoration:underline">non</span> trasparenti.
 +
 
 +
Per mescolare le due immagini, ma facendo in modo che al di sotto della seconda immagine si intraveda la parte della prima immagine coperta, bisognerà rendere "semitrasparente" tale seconda immagine applicando il Metodo ".Opacity()" della Classe ''Image'' subito dopo che detta immagine sia stata caricata.
 +
<BR>Ad esempio riprendendo il codice precedente:
 +
im2<FONT Color=#B22222><B>.Opacity</b></font>(0.3)
 +
oppure impostando l'opacità nel sesto argomento del Metodo ".DrawImage()" della Classe ''Paint'':
 +
.DrawImage(im2, 0, 0, im2.W, im2.H, <FONT Color=#B22222><B>0.3</b></font>)

Versione attuale delle 05:37, 21 mar 2024

Viene di seguito mostrato un codice per fondere due immagini in una sola.

Public Sub Button1_Click()

 Dim im1, im2 As Image
  
' Viene caricata la prima immagine:
 im1 = Image.Load("/percorso/del/primo/file/immagine")
 
' Viene caricata la seconda immagine:
 im2 = Image.Load("/percorso/del/secondo/file/immagine")
 
' La prima immagine viene resa manipolabile con la Classe "Paint":
 With Paint
   .Begin(im1)
' Disegna la seconda immagine - senza ridimensionamento - "sopra" la prima immagine:
   .DrawImage(im2, 0, 0, im2.W, im2.H)
   .End
 End With   
 
' Mostra il risultato in una "PictureBox":
 PictureBox1.Image = im1

End

Va precisato che la seconda immagine si sovrappone alla prima immagine, laddove essa ha pixel non trasparenti.

Per mescolare le due immagini, ma facendo in modo che al di sotto della seconda immagine si intraveda la parte della prima immagine coperta, bisognerà rendere "semitrasparente" tale seconda immagine applicando il Metodo ".Opacity()" della Classe Image subito dopo che detta immagine sia stata caricata.
Ad esempio riprendendo il codice precedente:

im2.Opacity(0.3)

oppure impostando l'opacità nel sesto argomento del Metodo ".DrawImage()" della Classe Paint:

.DrawImage(im2, 0, 0, im2.W, im2.H, 0.3)