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

Da Gambas-it.org - Wikipedia.
Riga 1: Riga 1:
 
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.
 
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.
+
==Usando il plugin generico "decodebin"==
 +
Per effettuare la conversione, useremo il plugin generico "decodebin" di GStreamer.
  
 
===Conversione immagine da un qualunque formato al formato BMP===
 
===Conversione immagine da un qualunque formato al formato BMP===
Riga 8: Riga 9:
 
   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 appoggio As String
+
   Dim temporaneo As String
 
   Dim i As Integer
 
   Dim i As Integer
 
   
 
   
   appoggio = Temp
+
   temporaneo = Temp
 
   
 
   
 
   src = New MediaControl(pl, "filesrc")
 
   src = New MediaControl(pl, "filesrc")
Riga 19: Riga 20:
 
   enc = New MediaControl(pl, "<FONT Color=#B22222>avenc_bmp</font>")
 
   enc = New MediaControl(pl, "<FONT Color=#B22222>avenc_bmp</font>")
 
   snk = New MediaControl(pl, "filesink")
 
   snk = New MediaControl(pl, "filesink")
   snk["location"] = appoggio
+
   snk["location"] = temporaneo
 
    
 
    
 
  <FONT Color=gray>' ''Colleghiamo fra loro all'interno della pipeline gli oggetti MediaControl impostati:''</font>
 
  <FONT Color=gray>' ''Colleghiamo fra loro all'interno della pipeline gli oggetti MediaControl impostati:''</font>
Riga 30: Riga 31:
 
    
 
    
 
   Repeat  
 
   Repeat  
     i = Stat(appoggio).Size
+
     i = Stat(temporaneo).Size
 
     Wait 0.7
 
     Wait 0.7
   Until Stat(appoggio).Size == i
+
   Until Stat(temporaneo).Size == i
 
   
 
   
   Copy appoggio To "/tmp/immagine.bmp"
+
   Copy temporaneo To "/tmp/immagine.bmp"
 
   
 
   
 
   pl.Close
 
   pl.Close
Riga 47: Riga 48:
 
  Repeat  
 
  Repeat  
 
   Wait 0.01
 
   Wait 0.01
  Until Right(File.Load(appoggio), SizeOf(gb.Short)) = MkShort(&D9FF)
+
  Until Right(File.Load(temporaneo), SizeOf(gb.Short)) = MkShort(&D9FF)
 
   
 
   
  Copy appoggio To "/tmp/immagine.<FONT Color=#B22222>jpg</font>"
+
  Copy temporaneo To "/tmp/immagine.<FONT Color=#B22222>jpg</font>"
 
  ......
 
  ......
  
Riga 59: Riga 60:
 
  Repeat  
 
  Repeat  
 
   Wait 0.01
 
   Wait 0.01
  Until Right(File.Load(appoggio), SizeOf(gb.Integer)) = MkInt(&826042AE)
+
  Until Right(File.Load(temporaneo), SizeOf(gb.Integer)) = MkInt(&826042AE)
 
   
 
   
  Copy appoggio To "/tmp/immagine.<FONT Color=#B22222>png</font>"
+
  Copy temporaneo To "/tmp/immagine.<FONT Color=#B22222>png</font>"
 
  ......
 
  ......
  
Riga 72: Riga 73:
 
  Repeat  
 
  Repeat  
 
   Wait 1
 
   Wait 1
  Until Stat(appoggio).Size > 0
+
  Until Stat(temporaneo).Size > 0
 
   
 
   
  Copy appoggio To "/tmp/immagine.<FONT Color=#B22222>tif</font>"
+
  Copy temporaneo To "/tmp/immagine.<FONT Color=#B22222>tif</font>"
 
  ......
 
  ......
 +
 +
 +
==Usando specifici plugin di GStreamer==
 +
si potranno usare anche plugin specifici per formato da convertire.
 +
 +
===Convertire il formato immagine "webp"===
 +
Per convertire il formato "webp", possiamo utilizzare il plugin "webpdec" di GSreamer.
 +
<BR>Mostriamo un esempio, nel quale un file immagine di formato "webp" sarà convertito in formato "png":
 +
Public Sub Main()
 +
 +
  Dim pl As New MediaPipeline
 +
  Dim src, web, vdc, enc, snk As MediaControl
 +
  Dim temporaneo As String
 +
  Dim i As Integer
 +
 +
  temporaneo = Temp
 +
 +
  src = New MediaControl(pl, "filesrc")
 +
  src["location"] = "<FONT Color=gray>' ''/percorso/del/file.webp''</font>"
 +
  web = New MediaControl(pl, "webpdec")
 +
  vdc = New MediaControl(pl, "videoconvert")
 +
  enc = New MediaControl(pl, "pngenc")
 +
  snk = New MediaControl(pl, "filesink")
 +
  snk["location"] = temporaneo
 +
 +
  src.LinkTo(web)
 +
  web.LinkTo(vdc)
 +
  vdc.LinkTo(enc)
 +
  enc.LinkTo(snk)
 +
 +
  pl.Play()
 +
 
 +
  Repeat
 +
    Wait 0.01
 +
  Until Right(File.Load(temporaneo), SizeOf(gb.Integer)) = MkInt(&826042AE)
 +
 +
  Copy temporaneo To "/tmp/immagine.png"
 +
 +
  pl.Close
 +
 +
End

Versione delle 14:18, 17 mag 2023

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.

Usando il plugin generico "decodebin"

Per effettuare la conversione, useremo il plugin generico "decodebin" di GStreamer.

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 temporaneo As String
 Dim i As Integer

 temporaneo = Temp

 src = New MediaControl(pl, "filesrc")
 src["location"] = "/percorso/del/file/immagine"
 deb = New MediaControl(pl, "decodebin")
 vdc = New MediaControl(pl, "videoconvert")
 enc = New MediaControl(pl, "avenc_bmp")
 snk = New MediaControl(pl, "filesink")
 snk["location"] = temporaneo
  
' 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(temporaneo).Size
   Wait 0.7
 Until Stat(temporaneo).Size == i

 Copy temporaneo 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(temporaneo), SizeOf(gb.Short)) = MkShort(&D9FF)

Copy temporaneo 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(temporaneo), SizeOf(gb.Integer)) = MkInt(&826042AE)

Copy temporaneo 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(temporaneo).Size > 0

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


Usando specifici plugin di GStreamer

si potranno usare anche plugin specifici per formato da convertire.

Convertire il formato immagine "webp"

Per convertire il formato "webp", possiamo utilizzare il plugin "webpdec" di GSreamer.
Mostriamo un esempio, nel quale un file immagine di formato "webp" sarà convertito in formato "png":

Public Sub Main()

 Dim pl As New MediaPipeline
 Dim src, web, vdc, enc, snk As MediaControl
 Dim temporaneo As String
 Dim i As Integer

 temporaneo = Temp

 src = New MediaControl(pl, "filesrc")
 src["location"] = "' /percorso/del/file.webp"
 web = New MediaControl(pl, "webpdec")
 vdc = New MediaControl(pl, "videoconvert")
 enc = New MediaControl(pl, "pngenc")
 snk = New MediaControl(pl, "filesink")
 snk["location"] = temporaneo

 src.LinkTo(web)
 web.LinkTo(vdc)
 vdc.LinkTo(enc)
 enc.LinkTo(snk)

 pl.Play()
 
 Repeat 
   Wait 0.01
 Until Right(File.Load(temporaneo), SizeOf(gb.Integer)) = MkInt(&826042AE)

 Copy temporaneo To "/tmp/immagine.png"

 pl.Close

End