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

Da Gambas-it.org - Wikipedia.
 
(15 versioni intermedie di uno stesso utente non sono mostrate)
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 dal formato TIFF al formato BMP====
+
===Conversione immagine da un qualunque formato al formato BMP===
  Private Const PRIMOFILE As String = "/tmp/primofile"
+
  Private bo As Boolean
 
   
 
   
 
   
 
   
  '''Public''' Sub Main()
+
  Public Sub Main()
 
+
   Dim pl As New MediaPipeline
+
   Dim pl As MediaPipeline
 
   Dim src, deb, vdc, enc, snk As MediaControl
 
   Dim src, deb, vdc, enc, snk As MediaControl
   Dim i As Integer
+
 
+
   pl = New MediaPipeline As "PLine"
 +
 
   src = New MediaControl(pl, "filesrc")
 
   src = New MediaControl(pl, "filesrc")
   src["location"] = "<FONT Color=gray>''/percorso/del/file.tif''</font>"
+
   src["location"] = "<FONT Color=darkgreen>''/percorso/del/file/immagine''</font>"
 
   deb = New MediaControl(pl, "<FONT Color=#B22222>decodebin</font>")
 
   deb = New MediaControl(pl, "<FONT Color=#B22222>decodebin</font>")
 
   vdc = New MediaControl(pl, "videoconvert")
 
   vdc = New MediaControl(pl, "videoconvert")
 
   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"] = PRIMOFILE
+
   snk["location"] = "/tmp/immagine.bmp"
 
    
 
    
 
  <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 29: Riga 31:
 
   pl.Play()
 
   pl.Play()
 
    
 
    
   Repeat
+
   While Not bo
    i = Stat(PRIMOFILE).Size
+
     Wait 0.01
     Wait 0.7
+
   Wend
   Until Stat(PRIMOFILE).Size == i
+
 
+
   pl.Stop
   Copy PRIMOFILE To "/tmp/immagine.bmp"
 
 
 
 
   pl.Close
 
   pl.Close
 
    
 
    
  '''End'''
+
  End
 +
 +
 +
Public Sub PLine_End() <FONT Color=gray>' ''Questo Evento viene sollevato, quando la conversione è terminata''</font>
 +
 +
  bo = True
 +
 +
End
  
====Conversione immagine dal formato TIFF al formato JPG====
+
===Conversione immagine nel formato JPG===
 
Riprendendo il codice precedente, bisognerà sostituire le seguenti righe di comando a quelle corrispondenti in quel codice:
 
Riprendendo il codice precedente, bisognerà sostituire le seguenti righe di comando a quelle corrispondenti in quel codice:
 
  ......
 
  ......
 
  enc = New MediaControl(pl, "<FONT Color=#B22222>jpegenc</font>")
 
  enc = New MediaControl(pl, "<FONT Color=#B22222>jpegenc</font>")
......
 
Copy PRIMOFILE To "/tmp/immagine.<FONT Color=#B22222>jpg</font>"
 
 
  ......
 
  ......
  
====Conversione immagine dal formato TIFF al formato PNG====
+
===Conversione immagine nel formato PNG===
 
Riprendendo il primo codice, bisognerà sostituire le seguenti righe di comando a quelle corrispondenti in quel codice:
 
Riprendendo il primo codice, bisognerà sostituire le seguenti righe di comando a quelle corrispondenti in quel codice:
 
  ......
 
  ......
 
  enc = New MediaControl(pl, "<FONT Color=#B22222>pngenc</font>")
 
  enc = New MediaControl(pl, "<FONT Color=#B22222>pngenc</font>")
 
  ......
 
  ......
  Repeat
+
 
  Wait 0.01
+
===Conversione immagine nel formato TIFF===
  Until Right(File.Load(PRIMOFILE), 4) = MkInt(&826042AE)
+
Riprendendo il primo codice, bisognerà sostituire le seguenti righe di comando a quelle corrispondenti in quel codice.
 +
<BR>Ovviamente in tal caso il file originario, da convertire, sarà di formato diverso dal TIFF.  
 +
......
 +
  enc = New MediaControl(pl, "<FONT Color=#B22222>avenc_tiff</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":
 +
Private bo As Boolean
 
   
 
   
  Copy PRIMOFILE To "/tmp/immagine.<FONT Color=#B22222>png</font>"
+
   
  ......
+
Public Sub Main()
 +
 +
  Dim pl As MediaPipeline
 +
  Dim src, web, vdc, enc, snk As MediaControl
 +
 +
  pl = New MediaPipeline As "PLine"
 +
 +
  src = New MediaControl(pl, "filesrc")
 +
  src["location"] = "<FONT Color=darkgreen>''/percorso/del/file.webp''</font>"
 +
  web = New MediaControl(pl, "<FONT Color=#B22222>webpdec</font>")
 +
  vdc = New MediaControl(pl, "videoconvert")
 +
  enc = New MediaControl(pl, "pngenc")
 +
  snk = New MediaControl(pl, "filesink")
 +
  snk["location"] = "/tmp/immagine.png"
 +
 +
  src.LinkTo(web)
 +
  web.LinkTo(vdc)
 +
  vdc.LinkTo(enc)
 +
  enc.LinkTo(snk)
 +
 +
  pl.Play()
 +
 +
  While Not bo
 +
    Wait 0.01
 +
  Wend
 +
 +
  pl.Stop
 +
  pl.Close
 +
 +
End
 +
 +
 +
Public Sub PLine_End()
 +
 +
bo = True
 +
 +
End
 +
 
 +
===Convertire il formato immagine "png"===
 +
Per convertire il formato "png", possiamo utilizzare il plugin "pngdec" di GSreamer.
 +
<BR>Mostriamo un esempio, nel quale un file immagine di formato "png" sarà convertito in formato "jpeg":
 +
Private bo As Boolean
 +
 +
 +
Public Sub Main()
 +
 +
  Dim pl As MediaPipeline
 +
  Dim src, png, vdc, enc, snk As MediaControl
 +
 +
  pl = New MediaPipeline As "PLine"
 +
 +
  src = New MediaControl(pl, "filesrc")
 +
  src["location"] = "<FONT Color=darkgreen>''/percorso/del/file.png''</font>"
 +
  png = New MediaControl(pl, "<FONT Color=#B22222>pngdec</font>")
 +
  vdc = New MediaControl(pl, "videoconvert")
 +
  enc = New MediaControl(pl, "jpegenc")
 +
  snk = New MediaControl(pl, "filesink")
 +
  snk["location"] = "/tmp/immagine.jpg"
 +
 +
  src.LinkTo(png)
 +
  png.LinkTo(vdc)
 +
  vdc.LinkTo(enc)
 +
  enc.LinkTo(snk)
 +
 +
  pl.Play()
 +
 +
  While Not bo
 +
    Wait 0.01
 +
  Wend
 +
 +
  pl.Stop
 +
  pl.Close
 +
 +
End
 +
 +
 +
Public Sub PLine_End()
 +
 +
  bo = True
 +
 +
End
 +
 
 +
===Convertire il formato immagine "jpeg"===
 +
Per convertire il formato "jpeg", possiamo utilizzare il plugin "jpegdec" di GSreamer.
 +
<BR>Mostriamo un esempio, nel quale un file immagine di formato "jpeg" sarà convertito in formato "png":
 +
Private bo As Boolean
 +
 +
 +
Public Sub Main()
 +
 +
  Dim pl As MediaPipeline
 +
  Dim src, jpg, vdc, enc, snk As MediaControl
 +
 +
  pl = New MediaPipeline As "PLine"
 +
 +
  src = New MediaControl(pl, "filesrc")
 +
  src["location"] = "<FONT Color=darkgreen>''/percorso/del/file.jpg''</font>"
 +
  png = New MediaControl(pl, "<FONT Color=#B22222>jpegdec</font>")
 +
  vdc = New MediaControl(pl, "videoconvert")
 +
  enc = New MediaControl(pl, "pngenc")
 +
  snk = New MediaControl(pl, "filesink")
 +
  snk["location"] = "/tmp/immagine.png"
 +
   
 +
  src.LinkTo(jpg)
 +
  jpg.LinkTo(vdc)
 +
  vdc.LinkTo(enc)
 +
  enc.LinkTo(snk)
 +
 +
  pl.Play()
 +
 +
  While Not bo
 +
    Wait 0.01
 +
  Wend
 +
 +
  pl.Stop
 +
  pl.Close
 +
 +
End
 +
 +
 +
Public Sub PLine_End()
 +
 +
  bo = True
 +
 +
End
 +
 
 +
===Convertire il formato immagine "gif"===
 +
Per convertire il formato "gif", rinviamo alla seguente pagina: [[Convertire un file GIF in un file di formato OGV, Matroska e MP4 mediante il Componente gb.media]]

Versione attuale delle 07:21, 18 gen 2024

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

Private bo As Boolean


Public Sub Main()

 Dim pl As MediaPipeline
 Dim src, deb, vdc, enc, snk As MediaControl

 pl = New MediaPipeline As "PLine"

 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"] = "/tmp/immagine.bmp"
  
' 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()
  
 While Not bo
   Wait 0.01
 Wend

 pl.Stop
 pl.Close
  
End


Public Sub PLine_End() ' Questo Evento viene sollevato, quando la conversione è terminata

 bo = True

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")
......

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")
......

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")
......


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":

Private bo As Boolean


Public Sub Main()

 Dim pl As MediaPipeline
 Dim src, web, vdc, enc, snk As MediaControl

 pl = New MediaPipeline As "PLine"

 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"] = "/tmp/immagine.png"

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

 pl.Play()

 While Not bo
   Wait 0.01
 Wend

 pl.Stop
 pl.Close

End


Public Sub PLine_End()

bo = True

End

Convertire il formato immagine "png"

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

Private bo As Boolean


Public Sub Main()

 Dim pl As MediaPipeline
 Dim src, png, vdc, enc, snk As MediaControl

 pl = New MediaPipeline As "PLine"

 src = New MediaControl(pl, "filesrc")
 src["location"] = "/percorso/del/file.png"
 png = New MediaControl(pl, "pngdec")
 vdc = New MediaControl(pl, "videoconvert")
 enc = New MediaControl(pl, "jpegenc")
 snk = New MediaControl(pl, "filesink")
 snk["location"] = "/tmp/immagine.jpg"

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

 pl.Play()

 While Not bo
   Wait 0.01
 Wend

 pl.Stop
 pl.Close

End


Public Sub PLine_End()

 bo = True

End

Convertire il formato immagine "jpeg"

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

Private bo As Boolean


Public Sub Main()

 Dim pl As MediaPipeline
 Dim src, jpg, vdc, enc, snk As MediaControl

 pl = New MediaPipeline As "PLine"

 src = New MediaControl(pl, "filesrc")
 src["location"] = "/percorso/del/file.jpg"
 png = New MediaControl(pl, "jpegdec")
 vdc = New MediaControl(pl, "videoconvert")
 enc = New MediaControl(pl, "pngenc")
 snk = New MediaControl(pl, "filesink")
 snk["location"] = "/tmp/immagine.png"

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

 pl.Play()

 While Not bo
   Wait 0.01
 Wend

 pl.Stop
 pl.Close

End


Public Sub PLine_End()

 bo = True

End

Convertire il formato immagine "gif"

Per convertire il formato "gif", rinviamo alla seguente pagina: Convertire un file GIF in un file di formato OGV, Matroska e MP4 mediante il Componente gb.media