begin process at 2008 09 06 00:35:30
1 237 607 membres
9 nouveaux aujourd'hui
14 313 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : VB.NET problème de save de picturebox [ Divers / General ] (kyoleroi)

VB.NET problème de save de picturebox le 14/05/2008 09:01:03

kyoleroi

bonjour,
Je cherche l'erreur dans mon code!
Je désire enregistrer une pictureBox avec la commande pictureBox.Image.save(nomfichier, imageFormat.jpeg)
mais j'ai une erreur qui se génère lors de l'exécution:

"L'exception System.NullReferenceException n'a pas été gérée
  Message="Variable objet ou variable d'un bloc With non définie."

Donc je ne sais pas comment résoudre se problème.
J'avais déjà réaliser la fonction avec une savedialog mais bon l'apparition de la boite de dialogue est pénible.
Comment dois je faire pour enlever cette erreur?

cordialement


Re : VB.NET problème de save de picturebox le 14/05/2008 09:12:39

Renfield
(Admin CS)
ne pas tenter de faire un save sur un objet image qui n'existe pas (image est une reference nulle, dans ton projet)

Re : VB.NET problème de save de picturebox le 14/05/2008 09:22:02

kyoleroi

Je fais commen alors pour résoudre se problème?

cordialement


Re : VB.NET problème de save de picturebox le 14/05/2008 09:25:27

Renfield
(Admin CS)
qu'as tu, dans ce picturebox ?

image est une reference à un objet nul, donc, pas d'image, a priori

Re : VB.NET problème de save de picturebox le 14/05/2008 09:40:27

kyoleroi
en fait dans ma picture box, je récupère une image via une web cam ensuite, je la traite puis je l'enregistre, avec la boite de dialogue savedialogue sa marche mais avec un save simple non, peut être que je fais mon save trop tot?

Re : VB.NET problème de save de picturebox le 14/05/2008 09:52:12

Renfield
(Admin CS)
tu aurais du code (limite du qui fonctionne et du qui fonctionne pas) ?

Re : VB.NET problème de save de picturebox le 14/05/2008 10:45:48

kyoleroi

Sa va être long mais voila le code complet de ma gestion de web cam avec saisie de picturebox en sauvegarde:
Vous trouverez en vert la méthode de sauvegarde.
Imports DirectX.Capture

Public Class Form1
    Inherits System.Windows.Forms.Form
    Dim NombreDeCapture As Int16
    Dim TimeElapsCapture As Integer
    Dim StartTime As Date

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load

        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

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        'pre configuration du capturing
        'definission de la camera
        CaptureInformation2.Camera = Dispositivos.VideoInputDevices(ComboBox1.SelectedIndex)
        'mise en place du stream video et audio
        CaptureInformation2.CaptureInfo = New DirectX.Capture.Capture(CaptureInformation2.Camera, Dispositivos.AudioInputDevices(ComboBox2.SelectedIndex))
        'renseignement du panneau d'affichage de la video
        CaptureInformation2.CaptureInfo.PreviewWindow = PictureBox2
        'compteur pour les capture d'image (frame video)
        CaptureInformation2.Counter = 1
        CaptureInformation2.CounterFrames = 1
        'configurations avancées
        Configurer()
        'pour faire plus joli
        Button1.Enabled = False
        'pour la gestion evennementiel de la capture d'ecran je cree un gestionnaire d evennement sur Framecapturecomplete
        AddHandler CaptureInformation2.CaptureInfo.FrameCaptureComplete, AddressOf NewCaptureReady
    End Sub

    Private Sub Configurer()

        'configurations avancées
        'configuration du systeme de compression video et audio
        CaptureInformation2.CaptureInfo.VideoCompressor = Dispositivos.VideoCompressors(1) 'compression video
        'taille de la video
        CaptureInformation2.CaptureInfo.FrameSize = New Size(320, 240) 'taille de la video
        'FPS de la video
        CaptureInformation2.CaptureInfo.FrameRate = 50 'FPS
        'fichier .avi
        ''CaptureInformation.CaptureInfo.Filename = Application.StartupPath + "\essai.avi"
        'lancement du streaming d'affichage
        CaptureInformation2.CaptureInfo.RenderPreview()

    End Sub

    Private Sub NewCaptureReady(ByVal Sender As System.Windows.Forms.PictureBox)
        'appele par le gestionnaire de handler sur l'evennement "FrameCapture
        'ma picture capturé est arrivée...

        Dim la As PictureBox = CType(Sender, PictureBox) 'la je converti mon picturebox en picturebox...je sais pas pourquoi, fo le faire sinom ca marche pas

        '' histoire de savoir combien ca prends de temps de faire une capture.
        Dim RunLength As System.TimeSpan = Now.Subtract(StartTime)
        Dim TimeElapsCapture As Integer = RunLength.Milliseconds

        Label1.Visible = True
        NombreDeCapture = NombreDeCapture + 1
        Label1.Text = "Capture nmr:" & NombreDeCapture & " Capture realisée en:" & TimeElapsCapture & " ms"
        PictureBox1.Image = la.Image 'j affecte ma capture d'image a mon picturebox qui attend que ca.

    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        'demande une capture DirectX ...et lorsqu'elle est ready je la recoit par le Handler cree un peut plus haut
        Dim StartTime = Now    ' Starting date/time.
        CaptureInformation2.CaptureInfo.CaptureFrame()

'premier cas: bug, mais fonctionne si je l'insere dans un bouton donc je pense qui faut faire un delay pour attendre que la capture soit bien faite!!!

        PictureBox2.Image.save("nomfichier.jpeg", imageformat.jpeg)

'deuxième cas: marche
  
      Dim ds
        ds = New SaveFileDialog()
        ds.FileName = "c:\toto.bmp"
        ds.Title = "Save Image as..."
        ds.Filter = "Bitmap file (*.bmp)|*.bmp"
        ds.FilterIndex = 1
        If (ds.ShowDialog() <> Windows.Forms.DialogResult.OK) Then
            Return
        End If

        PictureBox2.Image.Save(ds.FileName)

    End Sub
End Class


Re : VB.NET problème de save de picturebox le 14/05/2008 11:07:26

Renfield
(Admin CS)
y'a pas un event (ou delegate a placer) qui te previens que ta capture est prête ?

ou possibilité de placer un Application.Doevents pour lui laisser les temps

Re : VB.NET problème de save de picturebox le 14/05/2008 11:16:13

kyoleroi
oui c'est cela que je cherche à faire, parce que comme on le vois, j'attend que mon image soit prète pour que je la mettent dans ma pictureBox, mais je ne connais pas les commande Application.Doevents!!!
Comment à votre avis je pourrais faire?

cordialement
j'avais penser à une scrutation de ma pictureBox1.image et a chaque fois quelle est modidfier je l'enregistre!

Re : VB.NET problème de save de picturebox le 14/05/2008 11:29:37

Renfield
(Admin CS)
ce genre de boucle d'attente ?

Do While PictureBox1.Image Is Nothing
    Application.Doevents
Loop


[Page 1 Page 2]
Classé sous : problème, vb, erreur, picturebox, save

Participer à cet échange

Pub



Appels d'offres

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS