Je ve envoyer une image sur picturebox par winsock mais elle est volumineuse com

kapisko17 Messages postés 8 Date d'inscription samedi 31 mai 2003 Statut Membre Dernière intervention 24 décembre 2004 - 24 déc. 2004 à 19:41
deleplace Messages postés 40 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 2 mars 2009 - 13 févr. 2009 à 19:24
je ve envoyer une image dejas chargé dans le picture box pas winsock mais le probleme c'est que ça prend beucoup de temps et j'ai besoin de la compresser est ce qu'il y a pas un moyen pour faire ça mon programme consiste à prendre la capture d'ecran et l'envoyer par winsock elle occupe 2.25 mo c'est tré charger donc il faut voire un moyen pour la compresser ou n'importe quoi si vou avez la répense ou vous disposer de la source alors j'ai vraiment besoin de votre aide
A voir également:

2 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
25 déc. 2004 à 16:52
Salut kapisko17
-1- Je suppose que ton image est au format bitmap (BMP) --> Essaye de la convertir en JPG pour profiter de la compression : Voir cette source
-2- Pour le transfert de données assez longues (provoquand plusieurs déclenchements de DataArrival), regarde aussi cette source qui te permettra de transférer des fichiers de n'importe quelle taille. Cette source n'est pas optimisée mais elle peut t'aider à comprendre le fonctionnement des Winsocks.
Tu peux aussi jeter un oeil sur cette source récente

Vala
Jack
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
deleplace Messages postés 40 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 2 mars 2009
13 févr. 2009 à 19:24
Salut
Voici un convertisseur de fichier Tout formats(Bmp,Jpg,Png,Gif,Rle,Tif vers Bmp,Png,Gif,Jpg(Taux réglable)
en les convertissant en BMP dans un fichier temporaire
en utilisant gdiplus.dll


WinSock, j'ai déja utilisé et même transféré des Gigaoctets
j'ai constaté une limite (non documentée) à 1 ou 1.5 Ko par block envoyé
bonne chance


Private Declare Function GdiplusStartup& Lib "gdiplus" (Token&, inputbuf As Any, Optional ByVal outputbuf&)
Private Declare Sub GdiplusShutdown Lib "gdiplus" (ByVal Token&)
Private Declare Function GdipLoadImageFromFile& Lib "gdiplus" (ByVal FileName$, image&)
Private Declare Function GdipSaveImageToFile& Lib "gdiplus" (ByVal image&, ByVal FileName$, clsidEncoder As Any, encoderParams As Any)
Private Declare Sub GdipDisposeImage Lib "gdiplus" (ByVal image&)


Private Sub PictureToJpg(P as Oject,FichierJpgCible$,Optional Taux&=75)
'P PictureBox ou autre objet possédant .picture
Dim TMP$
TMP=environ("TMP") & "\TmpBmp.tmp" ' Fichier temporaire dans le dossier "TMP"
SavePicture P.picture,TMP
FileToJpg TMP,FichierJpgCible,Taux
Kill TMP
End Sub


Private Sub ImageToJpg(P as Oject,FileName$,Optional Taux&=75)
'P PictureBox ou autre objet possédant .image
Dim TMP$
TMP=environ("TMP") & "\TmpBmp.tmp"
SavePicture P.image,TMP
FileToJpg TMP,FichierJpgCible,Taux
Kill TMP
End Sub


Private Sub FileToBmp(FichierSource$,FichierBmpCible$)
Convert FichierSource,FichierBmpCible
End Sub


Private Sub FileToJpg(FichierSource$,FichierJpgCible$,Optional Taux&=75)
Convert FichierSource,FichierJpgCible,Taux
End Sub


Private Sub FileToPng(FichierSource$,FichierPngCible$)
Convert FichierSource,FichierPngCible,1
End Sub


Private Sub FileToGif(FichierSource$,FichierGifCible$)
Convert FichierSource,FichierGifCible,2
End Sub


'Cette fonction permet de resoudre presque toutes les conversions d'images utiles
'Bmp,Jpg,Png,Gif,Rle,Tif(pas tous) vers Bmp,Png,Gif,Jpg(Taux réglable)


Function Convert&(Source$, Destination$, Optional Q&)
'si Q=0 :TypConv=0: Convertit en BMP
'si Q=1 :TypConv=6: Convertit en PNG
'si Q=2 :TypConv=2: Convertit en GIF
'si Q>2 :TypConv=1: Convertit en JPG avec le taux de Qualité Q (3 à 100, typiquement 75)


Dim Img&, L&(11), TypConv&, S$, Token&
L(4) = 1


'*** partie non debuggable
'ouvre gdiplus
If GdiplusStartup(Token, L(4)) Then Convert = 18: Exit Function 'GdiplusNotInitialized
Convert = GdipLoadImageFromFile(StrConv(Source, vbUnicode), Img)
If Convert = 0 Then 'lecture image source ok TypConv Q: If TypConv 1 Then TypConv = 6
 If Q > 2 Then 'conversion jpg  TypConv 1: L(5) &H1D5BE4B5: L(6) = &H452DFA4A: L(7) = &HB35DDD9C  L(8) &HEBE70551: L(9) 1: L(10) = 4: L(11) = VarPtr(Q)
 End If L(0) &H557CF400 + TypConv: L(1) &H11D31A04: L(2) = &H739A&: L(3) = &H2EF31EF8
 Convert = GdipSaveImageToFile(Img, StrConv(Destination, vbUnicode), L(0), L(4))
 GdipDisposeImage Img
End If
GdiplusShutdown Token
'fin de la partie non debuggable
End Function
 
'Convert returns:
'0 Ok,GenericError,InvalidParameter,OutOfMemory
'4 ObjectBusy,InsufficientBuffer,NotImplemented,Win32Error
'8 WrongState,Aborted,FileNotFound,ValueOverflow
'12 AccessDenied,UnknownImageFormat,FontFamilyNotFound,FontStyleNotFound
'16 NotTrueTypeFont,UnsupportedGdiplusVersion,GdiplusNotInitialized,PropertyNotFound
'20 PropertyNotSupported




'remarques:
'dans un programme compilé
' GdiplusStartup peut être lancé dans le Form_Load
'et
' GdiplusShutdown lancé par le Form_UnLoad
'le programme est alors indébuggable
'
'pour faire un gif 4,8 ou 16 couleurs à partir d'un bmp,
' il faut un bmp 8 bits à palette réduite à 4,8 ou 16 couleurs
'
'la conversion d'un rle(bmp comprimé) en bmp fabrique un bmp 32bits
'  (utilisable par loadpicture, le rle est directement utilisable)


 
0
Rejoignez-nous