Envoie d'une image sans passer par le disque dur

Résolu
cs_hippo92210b Messages postés 59 Date d'inscription lundi 12 février 2007 Statut Membre Dernière intervention 9 décembre 2009 - 4 juil. 2009 à 14:38
cs_hippo92210b Messages postés 59 Date d'inscription lundi 12 février 2007 Statut Membre Dernière intervention 9 décembre 2009 - 4 juil. 2009 à 18:54
Bonjour,

Voila, je voudrais savoir si quelqu'un sait comment envoyer une image par winsock sans passer par le disque dur, d'une image box a une autre image box, voila.

Merci d'avance.

2 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
4 juil. 2009 à 17:53
salut,

je viens de faire les snippets correspondant

tu récupères l'image en tableau de bytes :



<hr />
'    TRANSFORMER L'IMAGE D'UNE PICTUREBOX EN UN TABLEAU DE
BYTES
'    http://www.codyx.org/snippet_transformer-image-picturebox-tableau-bytes_496.aspx#2389
'    Posté par [ 401740 PCPT ] le 04/07/2009
<hr />



Private Type 
BITMAP

    bmType       As Long
    bmWidth      As Long
    bmHeight     As Long
    bmWidthBytes As Long
    bmPlanes     As Integer
    bmBitsPixel  As Integer
    bmBits       As Long
End Type
Private Declare Function GetObject Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As
Long
Private Declare Function GetBitmapBits Lib "gdi32" (ByVal hBitmap As Long, ByVal dwCount As Long, lpBits As Any) As
Long
Function PictureToArray(ByRef img As IPicture) As Byte()
    Dim tBM     As BITMAP
    Dim abRet() As Byte
    Dim lSize   As Long
'  
structure
    Call GetObject(img.handle, Len(tBM), tBM)
'   préparation du tableau
    lSize = (tBM.bmWidth * 3) And &HFFFFFFFC
    ReDim abRet(0 To lSize * tBM.bmHeight * 3)
'   attribution,
retour
    Call GetBitmapBits(img.handle, UBound(abRet), abRet(0))
    PictureToArray = abRet
    Erase abRet
End Function


'----------------------------------------------------------------



'Remarques :


'Dim a() As Byte
'a = PictureToArray(Picture1.Image)












ensuite tu envoies ce tableau par senddata qui accepte les bytes, voir les sources si nécessaire

enfin une fois récupéré la totalité, tu l'affiches


<hr />
'    CONVERTIR UN TABLEAU DE BYTES EN IMAGE
'    http://www.codyx.org/snippet_convertir-tableau-bytes-image_489.aspx#2390
'    Posté par [ 401740 PCPT ] le 04/07/2009
<hr />



Private Declare Function 
SetBitmapBits 
Lib
"gdi32" 
(
ByVal 
hBitmap 
As Long

ByVal 
dwCount 
As Long
, lpBits
As Any
)
As
Long


Sub 
ArrayToPicture(
ByRef 
byteArray() 
As Byte
,
ByRef
imgDest
As
IPicture)

    Call SetBitmapBits(imgDest.handle, UBound(byteArray),
byteArray(0))
End Sub


'----------------------------------------------------------------



'Remarques :


'ArrayToPicture a, Picture2.Image
'Picture2.Refresh
'
'NB
: le tableau de bytes 'a' doit être valide, voir la fonction inverse
correspondante
:
'http://www.codyx.org/snippet_transformer-image-picturebox-tableau-bytes_496.aspx#2389








++

<hr size ="2" width="100%" />
3
cs_hippo92210b Messages postés 59 Date d'inscription lundi 12 février 2007 Statut Membre Dernière intervention 9 décembre 2009
4 juil. 2009 à 18:54
Merci beaucoup !
0
Rejoignez-nous