Convertire i formati immagine mediante il Componente gb.media
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":
Public Sub Main() Dim pl As New MediaPipeline Dim src, png, 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.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() Repeat Wait 0.01 Until Right(File.Load(temporaneo), SizeOf(gb.Short)) = MkShort(&D9FF) Copy temporaneo To "/tmp/immagine.jpg" pl.Close 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":
Public Sub Main() Dim pl As New MediaPipeline Dim src, jpg, 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.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() Repeat Wait 0.01 Until Right(File.Load(temporaneo), SizeOf(gb.Integer)) = MkInt(&826042AE) Copy temporaneo To "/tmp/immagine.png" pl.Close End