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

Da Gambas-it.org - Wikipedia.
Riga 130: Riga 130:
 
Per convertire il formato "png", possiamo utilizzare il plugin "pngdec" di GSreamer.
 
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":
 
<BR>Mostriamo un esempio, nel quale un file immagine di formato "png" sarà convertito in formato "jpeg":
 +
Private pl As New MediaPipeline
 +
Private bo As Boolean
 +
 +
 
  Public Sub Main()
 
  Public Sub Main()
 
   
 
   
  Dim pl As New MediaPipeline
 
 
   Dim src, png, vdc, enc, snk As MediaControl
 
   Dim src, png, vdc, enc, snk As MediaControl
 
   Dim temporaneo As String
 
   Dim temporaneo As String
  Dim i As Integer
 
 
   
 
   
 
   temporaneo = Temp
 
   temporaneo = Temp
 +
 +
  pl = New MediaPipeline As "PLine"
 
   
 
   
 
   src = New MediaControl(pl, "filesrc")
 
   src = New MediaControl(pl, "filesrc")
Riga 153: Riga 157:
 
   
 
   
 
   pl.Play()
 
   pl.Play()
 
+
   Repeat
+
   While Not bo
 
     Wait 0.01
 
     Wait 0.01
   Until Right(File.Load(temporaneo), SizeOf(gb.Short)) = MkShort(&D9FF)
+
   Wend
 
   
 
   
 
   Copy temporaneo To "/tmp/immagine.jpg"
 
   Copy temporaneo To "/tmp/immagine.jpg"
 
   
 
   
 
   pl.Close
 
   pl.Close
 +
 +
End
 +
 +
Public Sub PLine_End()
 +
 +
  bo = True
 
   
 
   
 
  End
 
  End
Riga 167: Riga 177:
 
Per convertire il formato "jpeg", possiamo utilizzare il plugin "jpegdec" di GSreamer.
 
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":
 
<BR>Mostriamo un esempio, nel quale un file immagine di formato "jpeg" sarà convertito in formato "png":
 +
Private pl As New MediaPipeline
 +
Private bo As Boolean
 +
 +
 
  Public Sub Main()
 
  Public Sub Main()
 
   
 
   
  Dim pl As New MediaPipeline
 
 
   Dim src, jpg, vdc, enc, snk As MediaControl
 
   Dim src, jpg, vdc, enc, snk As MediaControl
 
   Dim temporaneo As String
 
   Dim temporaneo As String
Riga 175: Riga 188:
 
   
 
   
 
   temporaneo = Temp
 
   temporaneo = Temp
 +
 +
  pl = New MediaPipeline As "PLine"
 
   
 
   
 
   src = New MediaControl(pl, "filesrc")
 
   src = New MediaControl(pl, "filesrc")
Riga 190: Riga 205:
 
   
 
   
 
   pl.Play()
 
   pl.Play()
 
+
   Repeat
+
   While Not bo
 
     Wait 0.01
 
     Wait 0.01
   Until Right(File.Load(temporaneo), SizeOf(gb.Integer)) = MkInt(&826042AE)
+
   Wend
 
   
 
   
 
   Copy temporaneo To "/tmp/immagine.png"
 
   Copy temporaneo To "/tmp/immagine.png"
 
   
 
   
 
   pl.Close
 
   pl.Close
 +
 +
End
 +
 +
Public Sub PLine_End()
 +
 +
  bo = True
 
   
 
   
 
  End
 
  End

Versione delle 14:56, 2 giu 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

Private pl As New MediaPipeline
Private bo As Boolean


Public Sub Main()

 Dim src, deb, vdc, enc, snk As MediaControl
 Dim temporaneo As String

 temporaneo = Temp

 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"] = 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()
  
 While Not bo
   Wait 0.01
 Wend

 Copy temporaneo To "/tmp/immagine.bmp"

 pl.Close
 Quit
  
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")
......
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")
......
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")
......
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":

Private pl As New MediaPipeline
Private bo As Boolean


Public Sub Main()

 Dim src, web, vdc, enc, snk As MediaControl
 Dim temporaneo As String

 temporaneo = Temp

 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"] = temporaneo

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

 pl.Play()

 While Not bo
   Wait 0.01
 Wend

 Copy temporaneo To "/tmp/immagine.png"

 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 pl As New MediaPipeline
Private bo As Boolean


Public Sub Main()

 Dim src, png, vdc, enc, snk As MediaControl
 Dim temporaneo As String

 temporaneo = Temp

 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"] = temporaneo

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

 pl.Play()

 While Not bo
   Wait 0.01
 Wend

 Copy temporaneo To "/tmp/immagine.jpg"

 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 pl As New MediaPipeline
Private bo As Boolean


Public Sub Main()

 Dim src, jpg, vdc, enc, snk As MediaControl
 Dim temporaneo As String
 Dim i As Integer

 temporaneo = Temp

 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"] = temporaneo

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

 pl.Play()

 While Not bo
   Wait 0.01
 Wend

 Copy temporaneo To "/tmp/immagine.png"

 pl.Close

End

Public Sub PLine_End()

 bo = True

End