Differenze tra le versioni di "Gestione delle immagini mediante il Componente gb.media"
Riga 135: | Riga 135: | ||
src["location"] = "<FONT Color=gray>''/percorso/del/file/immagine.png''</font>" | src["location"] = "<FONT Color=gray>''/percorso/del/file/immagine.png''</font>" | ||
jde = New MediaControl(pl, "<FONT Color=#B22222>pngdec</font>") | jde = New MediaControl(pl, "<FONT Color=#B22222>pngdec</font>") | ||
+ | con = New MediaControl(pl, "videoconvert") | ||
+ | sca = New MediaControl(pl, "videoscale") | ||
+ | xim = New MediaControl(pl, "ximagesink") | ||
+ | xim.SetWindow(da) | ||
+ | |||
+ | <FONT Color=gray>' ''Vengono collegati i vari plug-in di GStreamer utilizzati:''</font>" | ||
+ | src.LinkTo(jde) | ||
+ | jde.LinkTo(con) | ||
+ | con.LinkTo(sca) | ||
+ | sca.LinkTo(xim) | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | |||
+ | '''Public''' Sub Button1_Click() | ||
+ | |||
+ | pl.Play() | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | |||
+ | ===Mostrare un file immagine di formato ''BMP''=== | ||
+ | Analogamente al codice precedente, per mostrare un file immagine di formato "''bmp''" all'interno della superficie di un Oggetto posto sul ''Form'', possiamo adottare il seguente codice: | ||
+ | Private pl As MediaPipeline | ||
+ | |||
+ | |||
+ | '''Public''' Sub Form_Open() | ||
+ | |||
+ | Dim da As DrawingArea | ||
+ | Dim src, jde, frz, con, sca, xim As MediaControl | ||
+ | |||
+ | <FONT Color=gray>' ''Crea una "DrawingArea" come oggetto GUI da usare per l'uscita immagine'':</font> | ||
+ | With da = New DrawingArea(Me) | ||
+ | .X = 10 | ||
+ | .Y = 10 | ||
+ | .W = 300 | ||
+ | .H = 300 | ||
+ | End With | ||
+ | |||
+ | pl = New MediaPipeline | ||
+ | |||
+ | src = New MediaControl(pl, "filesrc") | ||
+ | src["location"] = "<FONT Color=gray>''/percorso/del/file/immagine.bmp''</font>" | ||
+ | jde = New MediaControl(pl, "<FONT Color=#B22222>gdkpixbufdec</font>") | ||
con = New MediaControl(pl, "videoconvert") | con = New MediaControl(pl, "videoconvert") | ||
sca = New MediaControl(pl, "videoscale") | sca = New MediaControl(pl, "videoscale") |
Versione delle 13:21, 19 lug 2017
Il Componente gb.media ci permette, fra l'altro, di mostrare file immagine con le medesime modalità e opportunità previste per i file video.
Uso della Classe MediaPlayer
Innanzitutto possiamo utilizzare la Classe "MediaPlayer" per un breve codice e per una veloce soluzione. Potremo mostrare l'immegine all'interno di un oggetto GUI nativo di Gambas, oppure all'interno di una finestra esterna creata automaticamente dalle risorse del Componente gb.media .
Mostrare l'immagine all'interno di un oggetto GUI
Rispetto alla consueta modalità di caricare e di mostrare file immagine mediante la Classe PictureBox, le risorse del Componente gb.media ci consentono di mostrare l'immagine in qualsiasi oggetto che abbia una superficie.
Nell'esempio pratico che segue imposteremo una DrawingArea come oggetto GUI, nel quale mostrare il file immagine:
Private mp As MediaPlayer Public Sub Form_Open() Dim da As DrawingArea ' Crea una "DrawingArea" come oggetto GUI da usare per l'uscita immagine: With da = New DrawingArea(Me) .X = 10 .Y = 10 .W = 300 .H = 300 End With With mp = New MediaPlayer .URL = Media.URL("/percorso/del/file/immagine") ' Imposta il controllo dell'uscita immagine da usare: .SetWindow(da) End With End Public Sub Button1_Click() ' Mostra il file immagine: mp.Play() End
Mostrare l'immagine all'interno di una finestra esterna
Possiamo decidere di far mostrare l'immagine all'interno di una finestra esterna al programma Gambas, creata automaticamente della risorse del sistema GStreamer, sul quale si basa il Componente gb.media .
Di seguito un semplice codice analogo al pecedente:
Private mp As MediaPlayer Public Sub Form_Open() mp = New MediaPlayer mp.URL = Media.URL("/percorso/del/file/immagine") End Public Sub Button1_Click() ' Mostra il file immagine: mp.Play() End
Uso delle Classi MediaPipeline e MediaControl
Volendo, è possibile utilizzare le Classi "MediaPipeline" e "MediaControl" del Componente gb.media anziché quella sopra vista Medialayer.
Mostrare un file immagine di formato JPEG
Per mostrare un file immagine di formato "jpeg" all'interno della superficie di un Oggetto posto sul Form, possiamo adottare il seguente codice:
Private pl As MediaPipeline Public Sub Form_Open() Dim da As DrawingArea Dim src, jde, frz, con, sca, xim As MediaControl ' Crea una "DrawingArea" come oggetto GUI da usare per l'uscita immagine: With da = New DrawingArea(Me) .X = 10 .Y = 10 .W = 300 .H = 300 End With pl = New MediaPipeline src = New MediaControl(pl, "filesrc") src["location"] = "/percorso/del/file/immagine.jpg" jde = New MediaControl(pl, "jpegdec") con = New MediaControl(pl, "videoconvert") sca = New MediaControl(pl, "videoscale") xim = New MediaControl(pl, "ximagesink") xim.SetWindow(da) ' Vengono collegati i vari plug-in di GStreamer utilizzati:" src.LinkTo(jde) jde.LinkTo(con) con.LinkTo(sca) sca.LinkTo(xim) End Public Sub Button1_Click() pl.Play() End
Mostrare un file immagine di formato PNG
Analogamente al codice precedente, per mostrare un file immagine di formato "png" all'interno della superficie di un Oggetto posto sul Form, possiamo adottare il seguente codice:
Private pl As MediaPipeline Public Sub Form_Open() Dim da As DrawingArea Dim src, jde, frz, con, sca, xim As MediaControl ' Crea una "DrawingArea" come oggetto GUI da usare per l'uscita immagine: With da = New DrawingArea(Me) .X = 10 .Y = 10 .W = 300 .H = 300 End With pl = New MediaPipeline src = New MediaControl(pl, "filesrc") src["location"] = "/percorso/del/file/immagine.png" jde = New MediaControl(pl, "pngdec") con = New MediaControl(pl, "videoconvert") sca = New MediaControl(pl, "videoscale") xim = New MediaControl(pl, "ximagesink") xim.SetWindow(da) ' Vengono collegati i vari plug-in di GStreamer utilizzati:" src.LinkTo(jde) jde.LinkTo(con) con.LinkTo(sca) sca.LinkTo(xim) End Public Sub Button1_Click() pl.Play() End
Mostrare un file immagine di formato BMP
Analogamente al codice precedente, per mostrare un file immagine di formato "bmp" all'interno della superficie di un Oggetto posto sul Form, possiamo adottare il seguente codice:
Private pl As MediaPipeline Public Sub Form_Open() Dim da As DrawingArea Dim src, jde, frz, con, sca, xim As MediaControl ' Crea una "DrawingArea" come oggetto GUI da usare per l'uscita immagine: With da = New DrawingArea(Me) .X = 10 .Y = 10 .W = 300 .H = 300 End With pl = New MediaPipeline src = New MediaControl(pl, "filesrc") src["location"] = "/percorso/del/file/immagine.bmp" jde = New MediaControl(pl, "gdkpixbufdec") con = New MediaControl(pl, "videoconvert") sca = New MediaControl(pl, "videoscale") xim = New MediaControl(pl, "ximagesink") xim.SetWindow(da) ' Vengono collegati i vari plug-in di GStreamer utilizzati:" src.LinkTo(jde) jde.LinkTo(con) con.LinkTo(sca) sca.LinkTo(xim) End Public Sub Button1_Click() pl.Play() End