Differenze tra le versioni di "Convertire i formati immagine mediante il Componente gb.media"

Da Gambas-it.org - Wikipedia.
Riga 3: Riga 3:
 
Mostriamo di seguito qualche esempio pratico.
 
Mostriamo di seguito qualche esempio pratico.
  
====Conversione immagine dal formato TIFF al formato BMP====
+
===Conversione immagine da un qualunque formato al formato BMP===
  Private Const PRIMOFILE As String = "/tmp/primofile"
+
  '''Public''' Sub Main()
 
   
 
   
 
'''Public''' Sub Main()
 
 
 
 
   Dim pl As New MediaPipeline
 
   Dim pl As New MediaPipeline
 
   Dim src, deb, vdc, enc, snk As MediaControl
 
   Dim src, deb, vdc, enc, snk As MediaControl
 +
  Dim primofile As String
 
   Dim i As Integer
 
   Dim i As Integer
 
+
 +
  primofile = Temp
 +
 
   src = New MediaControl(pl, "filesrc")
 
   src = New MediaControl(pl, "filesrc")
 
   src["location"] = "<FONT Color=gray>''/percorso/del/file.tif''</font>"
 
   src["location"] = "<FONT Color=gray>''/percorso/del/file.tif''</font>"
Riga 30: Riga 30:
 
    
 
    
 
   Repeat  
 
   Repeat  
     i = Stat(PRIMOFILE).Size
+
     i = Stat(primofile).Size
 
     Wait 0.7
 
     Wait 0.7
   Until Stat(PRIMOFILE).Size == i
+
   Until Stat(primofile).Size == i
 
+
   Copy PRIMOFILE To "/tmp/immagine.bmp"
+
   Copy primofile To "/tmp/immagine.bmp"
 
+
 
   pl.Close
 
   pl.Close
 
    
 
    
Riga 47: Riga 47:
 
  Repeat  
 
  Repeat  
 
   Wait 0.01
 
   Wait 0.01
  Until Right(File.Load(PRIMOFILE), SizeOf(gb.Short)) = MkShort(&D9FF)
+
  Until Right(File.Load(primofile), SizeOf(gb.Short)) = MkShort(&D9FF)
 
   
 
   
  Copy PRIMOFILE To "/tmp/immagine.<FONT Color=#B22222>jpg</font>"
+
  Copy primofile To "/tmp/immagine.<FONT Color=#B22222>jpg</font>"
 
  ......
 
  ......
  
Riga 59: Riga 59:
 
  Repeat  
 
  Repeat  
 
   Wait 0.01
 
   Wait 0.01
  Until Right(File.Load(PRIMOFILE), SizeOf(gb.Integer)) = MkInt(&826042AE)
+
  Until Right(File.Load(primofile), SizeOf(gb.Integer)) = MkInt(&826042AE)
 
   
 
   
  Copy PRIMOFILE To "/tmp/immagine.<FONT Color=#B22222>png</font>"
+
  Copy primofile To "/tmp/immagine.<FONT Color=#B22222>png</font>"
 
  ......
 
  ......
  
Riga 72: Riga 72:
 
  Repeat  
 
  Repeat  
 
   Wait 1
 
   Wait 1
  Until Stat(PRIMOFILE).Size > 0
+
  Until Stat(primofile).Size > 0
 
   
 
   
  Copy PRIMOFILE To "/tmp/immagine.<FONT Color=#B22222>tif</font>"
+
  Copy primofile To "/tmp/immagine.<FONT Color=#B22222>tif</font>"
 
  ......
 
  ......

Versione delle 18:23, 6 ott 2022

Utilizzando i plugin di GStreamer con le Classi MediaControl e MediaPipeline del Componente gb.media, è possibile effettuare diverse conversioni di file immagine da un formato ad un altro.

Mostriamo di seguito qualche esempio pratico.

Conversione immagine da un qualunque formato al formato BMP

Public Sub Main()

 Dim pl As New MediaPipeline
 Dim src, deb, vdc, enc, snk As MediaControl
 Dim primofile As String
 Dim i As Integer

 primofile = Temp

 src = New MediaControl(pl, "filesrc")
 src["location"] = "/percorso/del/file.tif"
 deb = New MediaControl(pl, "decodebin")
 vdc = New MediaControl(pl, "videoconvert")
 enc = New MediaControl(pl, "avenc_bmp")
 snk = New MediaControl(pl, "filesink")
 snk["location"] = PRIMOFILE
  
' Colleghiamo fra loro all'interno della pipeline gli oggetti MediaControl impostati:
 src.LinkTo(deb)
 deb.LinkLaterTo(vdc)
 vdc.LinkTo(enc)
 enc.LinkTo(snk)
 
 pl.Play()
  
 Repeat 
   i = Stat(primofile).Size
   Wait 0.7
 Until Stat(primofile).Size == i

 Copy primofile To "/tmp/immagine.bmp"

 pl.Close
  
End

Conversione immagine nel formato JPG

Riprendendo il codice precedente, bisognerà sostituire le seguenti righe di comando a quelle corrispondenti in quel codice:

......
enc = New MediaControl(pl, "jpegenc")
......
Repeat 
  Wait 0.01
Until Right(File.Load(primofile), SizeOf(gb.Short)) = MkShort(&D9FF)

Copy primofile To "/tmp/immagine.jpg"
......

Conversione immagine nel formato PNG

Riprendendo il primo codice, bisognerà sostituire le seguenti righe di comando a quelle corrispondenti in quel codice:

......
enc = New MediaControl(pl, "pngenc")
......
Repeat 
  Wait 0.01
Until Right(File.Load(primofile), SizeOf(gb.Integer)) = MkInt(&826042AE)

Copy primofile To "/tmp/immagine.png"
......

Conversione immagine nel formato TIFF

Riprendendo il primo codice, bisognerà sostituire le seguenti righe di comando a quelle corrispondenti in quel codice.
Ovviamente in tal caso il file originario, da convertire, sarà di formato diverso dal TIFF.

......
enc = New MediaControl(pl, "avenc_tiff")
......
Repeat 
  Wait 1
Until Stat(primofile).Size > 0

Copy primofile To "/tmp/immagine.tif"
......