Comment faire un buffer (Tableau de byte)

cs_bolandfranck Messages postés 34 Date d'inscription lundi 15 janvier 2007 Statut Membre Dernière intervention 8 octobre 2009 - 21 nov. 2007 à 22:03
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 - 23 nov. 2007 à 11:00
Bonjour, mon probleme est tous simple cependant je ne m'en sort pas:

Je dispose d'un PictureBox : picturebox1 et je souhaite creer un tableau de byte (buffer) de l'image qu'il contient.

Nota : L'image n'existe pas en fichier même: il s'agit en faite de fonction que j'ai récupéré qui me permettent d'obtenir une image de se que film la webcam. (Le but etant d'envoyer cette image grace a une classe winsock à un autre poste)

Je pense pas que se soit super dificil mais sa suffit pour me bloquer actuellement.

Merci

9 réponses

cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
21 nov. 2007 à 23:14
Bonsoir,
Le but est de créer un nouveau Bitmap pour recevoir les données de ta picturebox et les manipuler.
Puis mettre en mémoire le contenu binaire de l'image avec la méthode Save() de notre Bitmap crée précédemment.
Et une fois en mémoire on va récupérer se contenu dans un tableau de Byte.

--------------------------------------------------------->8

Dim bmp as new Bitmap(Picturebox1.image)
Dim ms as new System.IO.MemoryStream()

bmp.Save(ms,System.Drawing.Imaging.ImageFormat.bmp)

Dim TonBuffer as byte() = ms.ToArray()

ms.Close()
ms.Dispose()

8<---------------------------------------------------------

++
0
cs_bolandfranck Messages postés 34 Date d'inscription lundi 15 janvier 2007 Statut Membre Dernière intervention 8 octobre 2009
21 nov. 2007 à 23:38
Merci bcp sa marche du tonner meme si je suis bloqué plus loin mais bon je saurai que je peut compter sur le forum un grand merci c'est la premiere fois que l'on m'apporte une vrai réponse.
0
cs_bolandfranck Messages postés 34 Date d'inscription lundi 15 janvier 2007 Statut Membre Dernière intervention 8 octobre 2009
21 nov. 2007 à 23:42
Un petit probleme supplementaire . sa semble ido mais comment faire l'inverse? une fois recus l'image je veut la recontruire a partir du tableau de byte?
0
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
21 nov. 2007 à 23:59
J'ai déposé il y a peu de temps un bout de code pour cela sur Codyx.

++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_bolandfranck Messages postés 34 Date d'inscription lundi 15 janvier 2007 Statut Membre Dernière intervention 8 octobre 2009
22 nov. 2007 à 00:07
Merci bien mais j'ai une erreur :Une erreur générique s'est produite dans GDI+.

mon code :

Dim b() As Byte = CType(sender, Crazyht.Net.Clients.ClientTCP).RecupDonneesOctets(True)
        Dim ms As New System.IO.MemoryStream(b)
        Dim img As Image = Image.FromStream(ms)
        PictureBox1.Image = img

b() contient bien les bytes pourtant !

Peut tu m'aider stp
0
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
22 nov. 2007 à 12:12
As-tu comparer le contenu du tableau de byte que tu envois et le contenu de celui que tu récupères ?
0
cs_bolandfranck Messages postés 34 Date d'inscription lundi 15 janvier 2007 Statut Membre Dernière intervention 8 octobre 2009
22 nov. 2007 à 13:55
Effectivement il doit y avoir un probleme lors du transfert donc j'ai décidé d'abandonner ma source de transfert pour en trouver une autre.

Je cherche donc maintenant une source permettant l'echange de donnée (image) entre 2 postes

Merci
0
cs_bolandfranck Messages postés 34 Date d'inscription lundi 15 janvier 2007 Statut Membre Dernière intervention 8 octobre 2009
22 nov. 2007 à 23:41
Bonjour, apres un echec avec le code d'autre developpeur, je tente ma
chance en essayant de faire mon propre code pour passer une  image d'un
poste à un autre grace au socket.

Je sais que c'est pas bien compliqué mais je galère.

Voici mon code:

Logiciel emeteur

    Public WithEvents Soket As New Sockets.TcpListener(200)
    Public WithEvents OTimer As New Timer
    Dim s As Socket

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Soket.Start()
        s = Soket.AcceptSocket()
        OTimer.Start()
        's.Close()
    End Sub

    Private Sub OTimerTick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OTimer.Tick
           Dim mstImage As MemoryStream = New MemoryStream
            PictureBox1.Image.Save(mstImage, System.Drawing.Imaging.ImageFormat.Jpeg)
            Dim bytImage As Byte() = mstImage.GetBuffer
            Dim byteDateLine() As Byte = bytImage
            s.Send(bytImage, bytImage.Length, SocketFlags.None)
    End Sub

Logiciel recepteur

    Public WithEvents Soket As New Sockets.TcpClient
    Public WithEvents OTimer As New Timer

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Soket.Connect("127.0.0.1", 200)
        OTimer.Start()
    End Sub
    Private Sub OTimerTick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OTimer.Tick
        Try
            Dim networkStream As NetworkStream = Soket.GetStream()
           
Dim MyReceptBuffer As Byte = Soket.ReceiveBufferSize // l'erreur est
ICI  et me dit "L'opération arithmétique a prvoqué un dépassement de
capacité"
            Dim mstImage As MemoryStream = New MemoryStream(MyReceptBuffer)
            Dim img As Image = Image.FromStream(mstImage)
            PictureBox1.Image = img
            Me.Refresh()
            PictureBox1.Refresh()
        Catch
        End Try
    End Sub

Voila merci de m'aider avant que je désespère d'arriver a faire quelque chose de mes bouts de code
0
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
23 nov. 2007 à 11:00
Bonjour,
Je viens de te préparer un exemple à télécharger ici

++
0
Rejoignez-nous