Chiche69
Messages postés34Date d'inscriptionmercredi 24 juin 2009StatutMembreDernière intervention25 septembre 2010
-
30 juil. 2009 à 11:47
cs_saxor
Messages postés13Date d'inscriptionsamedi 4 avril 2009StatutMembreDernière intervention 5 août 2009
-
31 juil. 2009 à 14:34
Bonjour,
je fais des captures d'images grace au controle AxltmmCaptureCtrl1. J'ai un bouton qui enregistre les captures dans un repertoire, puis les images presentes dans ce repertoire s'affichent sous forme d'icones dans une listview. Le probleme est que lorsque je lance mon programme, pour la premiere capturem tout se passe bien, en revanche il m'est impossible de proceder a une seconde capture sans fermer et relancer le programme.
J'ai fait pas mal de recherches sur cette erreur ("A generic error occured in GDI+") apparement il peut y avoir beaucoup de causes a cette erreur, je n'ai pas trouver la mienne.
Chiche69
Messages postés34Date d'inscriptionmercredi 24 juin 2009StatutMembreDernière intervention25 septembre 2010 30 juil. 2009 à 13:26
salut,
nhervagault Merci pour ta reponse/question. Ecoute je sais pas trop j'ai pris la premier piste que j'ai trouvee. A quelle source tu penses? Toutes les proposions me vont. L'avantage avec la librairie que j'utilise, c'est que je peut faire des captures d'images, des enregistrements videos et les lire...
Pour ce qui est du format saxor, c'est le format de l'image qui varie en fonction du choix de l'utilisateur, C'est a dire jpg, bmp, ou gif.
Je veux bien voir les codes sources disponnibles sur ce site mais pourriez vous me dire lequel et pourquoi stp?
Ou alors m'expliquer comment resoufre l'erreur de GDI+
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Chiche69
Messages postés34Date d'inscriptionmercredi 24 juin 2009StatutMembreDernière intervention25 septembre 2010 30 juil. 2009 à 14:20
No Problem!
En fait je l'avais deja vu cette source. J'avais commence en m'inspirant de ce code mais finalement j'ai change parce que les commandes semblaient plus simples avec LTMMLIB.
Je vais essayer de faire quelques modifications mais j'aimerais quand meme comprendre comment corriger le probleme GDI+ parce que ca me serait plus pratique!!
lorsque je clic sur button1 ca me fait plein de captures d'images a la suite et ca ne s'arrete pas tant que je ne clic pas sur button2. Donc en quelque sorte ca marche... mais pas exactement comme je le souhaiterais.
L'ideal serait que lorsque je clic sur button1 ca me fasse UNE capture et pi c'est tout ;)
du coup j'essaye de changer de mode a partir de cette ligne :
AxltmmCaptureCtrl1.StartCapture(LTMMLib.ltmmCapture_Mode.ltmmCapture_Mode_Video) '(int)
mais je ne trouve pas
desole de "refouller" tout se que tu me donnes mais en tout cas c'est cool d'essayer de m'aider la dessus
Chiche69
Messages postés34Date d'inscriptionmercredi 24 juin 2009StatutMembreDernière intervention25 septembre 2010 30 juil. 2009 à 16:57
J'ai tente avec un timer, differentes valeures mais les temps qu'il faut pour l'appareil n'est pas constant apparement... Quant a un thread je sais pas trop comment ca marche.
Public Class MainForm
Inherits System.Windows.Forms.Form
Public Dispositivos As New Filters() 'le filtre en cours
Dim format As String
Dim l As Integer = 1 ' LoadImage()
Dim m As Integer ' LoadVideo()
Dim ValidateOK As Boolean = False
Dim ListBoxVirtuelle As New ListBox
Dim CurrentImageList As ImageList
Dim DateHeure As String = Date.Now.Day & "-" & Month(Now) & "-" & Year(Now) & " " & Hour(Now) & "h" & Minute(Now) & "m" & Second(Now) & "s"
Private Sub MainForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Initialisation des peripheriques installes sur la machine
Dim j As Short
Dim f As Filter
'listage des peripheriques video installés sur la machine
ComboBox1.Items.Clear()
For j = 0 To Dispositivos.VideoInputDevices.Count - 1
f = Dispositivos.VideoInputDevices(j)
ComboBox1.Items.Add(f.Name)
Next
If j > 0 Then ComboBox1.SelectedIndex = 0
'listage des peripheriques audio installés sur la machine
ComboBox2.Items.Clear()
For j = 0 To Dispositivos.AudioInputDevices.Count - 1
f = Dispositivos.AudioInputDevices(j)
ComboBox2.Items.Add(f.Name)
Next
If j > 0 Then ComboBox2.SelectedIndex = 0
' Initialiser le comboBox avec son premier choix
ComboBox3.Text = ComboBox3.Items(0)
Public Sub LoadImage()
l = 1
ListView1.Items.Clear()
CurrentImageList.Images.Clear()
ListBoxVirtuelle.Items.Clear()
For Each foundImage As String In _
My.Computer.FileSystem.GetFiles( _
"D:\images", _
FileIO.SearchOption.SearchTopLevelOnly, "*.gif*", "*.jpg*", "*.bmp*")
CurrentImageList.Images.Add(Image.FromFile(foundImage))
ListView1.Items.Add(New ListViewItem(New String() {""}, l - 1))
ListView1.View = View.LargeIcon
ListBoxVirtuelle.Items.Add(foundImage)
l = l + 1
Next
End Sub
Public Sub LoadVideo()
m = 1
ListView1.Items.Clear()
CurrentImageList.Images.Clear()
ListBoxVirtuelle.Items.Clear()
For Each FoundVideo As String In _
My.Computer.FileSystem.GetFiles( _
"D:\videos", _
FileIO.SearchOption.SearchTopLevelOnly, "*.gif*")
CurrentImageList.Images.Add(Image.FromFile(FoundVideo))
ListView1.Items.Add(New ListViewItem(New String() {""}, m - 1))
ListView1.View = View.LargeIcon
'ListBoxVirtuelle.Items.Add(FoundVideo)
m = m + 1
Next
For Each foundvideo As String In _
My.Computer.FileSystem.GetFiles( _
"D:\videos", _
FileIO.SearchOption.SearchTopLevelOnly, "*.gif*", "*.avi*")
ListBoxVirtuelle.Items.Add(foundvideo)
Next
End Sub
Private Sub btnValidateSettings_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnValidateSettings.Click
If radiobtnBitmap.Checked Then
format = ".bmp"
ElseIf radiobtnGif.Checked Then
format = ".gif"
ElseIf radiobtnJPEG.Checked Then
format = ".jpg"
End If
'select first video device
Me.AxltmmCaptureCtrl1.VideoDevices.Selection = 0
Private Sub btnCapture_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCapture.Click
If ValidateOK = True Then
On Error GoTo ErrorHandle
AxltmmCaptureCtrl1.CapturePicture.Save("D:\Images" & DateHeure & format) 'L'erreur se produit ICI a partir de la seconde capture
LoadImage()
ErrorHandle:
MsgBox(Err.Description)
Err.Clear()
Else
MsgBox("Erreur, Vous n'avez pas valide de configuration")
End If
End Sub
Private Sub btnRecord_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRecord.Click
If ValidateOK = True Then
On Error GoTo ErrorHandle
AxltmmCaptureCtrl1.StartCapture(1)
Else
MsgBox("Erreur, Vous n'avez pas valide de configuration")
End If
Dim SelectedImageIndex As Integer = ListView1.FocusedItem.ImageIndex
Me.PictureBox1.ImageLocation = ListBoxVirtuelle.Items(SelectedImageIndex)
ElseIf ComboBox3.Text = ComboBox3.Items.Item(1) Then
AxltmmPlayCtrl1.Visible = True
AxltmmCaptureCtrl1.Visible = False
Dim q As Integer = 1
Dim SelectedImageIndex As Integer = ListView1.FocusedItem.ImageIndex
Dim video As String = ListBoxVirtuelle.Items.Item(SelectedImageIndex) 'Donne le chemin du fichier selectionne
Dim Fichier As String
Fichier = System.IO.Path.GetFileName(video).Split(".")(0) 'Donne le nom du fichier sans l'extension
Private Sub btnGoToLiveMode_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGoToLiveMode.Click
PictureBox1.Visible = False
AxltmmCaptureCtrl1.Visible = True
AxltmmPlayCtrl1.Visible = False
End Sub
Private Sub btnLeaveTheLiveMode_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLeaveTheLiveMode.Click
PictureBox1.Visible = True
AxltmmCaptureCtrl1.Visible = False
AxltmmPlayCtrl1.Visible = False
End Sub
Private Sub ComboBox3_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox3.SelectedIndexChanged
If ComboBox3.Text = ComboBox3.Items.Item(0) Then
CurrentImageList = ImageList1
ListView1.StateImageList = CurrentImageList
ListView1.LargeImageList = CurrentImageList
ElseIf ComboBox3.Text = ComboBox3.Items.Item(1) Then
CurrentImageList = ImageList2
ListView1.StateImageList = CurrentImageList
ListView1.LargeImageList = CurrentImageList
End If
End Sub
Private Sub RefreshFunction()
If ComboBox3.Text = ComboBox3.Items.Item(0) Then
AxltmmPlayCtrl1.Visible = False
AxltmmCaptureCtrl1.Visible = False
PictureBox1.Visible = True
LoadImage()
ElseIf ComboBox3.Text = ComboBox3.Items.Item(1) Then
AxltmmCaptureCtrl1.Visible = False
PictureBox1.Visible = False
AxltmmPlayCtrl1.Visible = True
LoadVideo()
End If
End Sub
Private Sub btnStopDevice_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStopDevice.Click
StopDeviceFunction()
End Sub
Private Sub StopDeviceFunction()
Me.AxltmmCaptureCtrl1.Preview = False
End Sub
La commande que j'utilise (AxltmmCaptureCtrl1.CapturePicture.Save), parait bien. Ca a marche mais je crois que le bug est la depuis que j'utilise la variable "now" dans le nom de l'image que je veux enregistrer. Est-ce possible?