Differenze tra le versioni di "Estrarre e salvare singole immagini durante l'esecuzione di un file video mediante il Componente gb.media"
Da Gambas-it.org - Wikipedia.
Riga 1: | Riga 1: | ||
− | Per estrarre e salvare mediante il Componente ''gb.media'' singole immagini da un file video durante la sua esecuzione all'interno di un Oggetto ''DrawingArea'', si | + | Per estrarre e salvare mediante il Componente ''gb.media'' singole immagini da un file video durante la sua esecuzione all'interno di un Oggetto ''DrawingArea'', si potrà fare uso anche del Metodo "''.GetScreenshot''" della Classe "''DesktopWindow''". Bisognerà attivare anche i Componenti "''gb.desktop''" e "''gb.desktop.x11''". |
+ | |||
Mostriamo un esempio pratico: | Mostriamo un esempio pratico: | ||
Riga 69: | Riga 70: | ||
pc[i].Save(drc &/ "picture_" & CStr(i) & ".png", 100) | pc[i].Save(drc &/ "picture_" & CStr(i) & ".png", 100) | ||
Next | Next | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | |||
+ | |||
+ | Si potrà anche fare uso del Metodo "''.Screenshot( )" della Classe "''Desktop''". Anche in questpo caso bisognerà attivare anche i Componenti "''gb.desktop''" e "''gb.desktop.x11''". | ||
+ | <BR>Facendo riferimento all'esempio di codice precedente, la sub-routine dell'evento "''Button2_Click( )''" dovrà essere modificata come segue: | ||
+ | '''Public''' Sub Button2_Click() | ||
+ | |||
+ | <FONT Color=gray>' ''Cattura una schermata del contenuto video mostrato in quel momento dalla "DrawingArea":''</font> | ||
+ | pc.Push(Desktop.Screenshot(da.ScreenX, da.ScreenY, da.W, da.H)) | ||
'''End''' | '''End''' |
Versione delle 15:59, 15 lug 2017
Per estrarre e salvare mediante il Componente gb.media singole immagini da un file video durante la sua esecuzione all'interno di un Oggetto DrawingArea, si potrà fare uso anche del Metodo ".GetScreenshot" della Classe "DesktopWindow". Bisognerà attivare anche i Componenti "gb.desktop" e "gb.desktop.x11".
Mostriamo un esempio pratico:
Private mp As MediaPlayer Private da As DrawingArea Private pc As New Picture[] Public Sub Form_Open() ' Crea una "DrawingArea" come oggetto GUI da usare per l'uscita video: With da = New DrawingArea(Me) .X = 10 .Y = 10 .W = 480 .H = 320 .Background = Color.Black End With With mp = New MediaPlayer .URL = Media.URL("/percorso/del/file/video") ' Imposta il controllo dell'uscita video da usare: .SetWindow(da) End With End Public Sub Button1_Click() ' Avvia l'esecuzione del video: mp.Play() End Public Sub Button2_Click() Dim dw As DesktopWindow dw = New DesktopWindow(da.Handle) ' Cattura una schermata del contenuto video mostrato in quel momento dalla "DrawingArea": pc.Push(dw.GetScreenshot(True)) End Public Sub Button3_Click() Dim i As Integer Dim drc, s As String ' Arresta l'esecuzione del file video nella "DrawingArea": mp.Stop() drc = "/tmp/imago" If Not Exist(drc) Then Mkdir drc Else For Each s In Dir(drc, "picture_*", gb.file) Kill drc &/ s Next Endif ' Genera infine i vari file immagine di formato .png: For i = 0 To pc.Max pc[i].Save(drc &/ "picture_" & CStr(i) & ".png", 100) Next End
Si potrà anche fare uso del Metodo ".Screenshot( )" della Classe "Desktop". Anche in questpo caso bisognerà attivare anche i Componenti "gb.desktop" e "gb.desktop.x11".
Facendo riferimento all'esempio di codice precedente, la sub-routine dell'evento "Button2_Click( )" dovrà essere modificata come segue:
Public Sub Button2_Click() ' Cattura una schermata del contenuto video mostrato in quel momento dalla "DrawingArea": pc.Push(Desktop.Screenshot(da.ScreenX, da.ScreenY, da.W, da.H)) End