Mon client TCP reçoit une image dans un paquet. L'image est compressée avec zlib. La tâche consiste à décompresser l'image et à la placer sur le formulaire.Enregistrer le fichier à partir d'un octet [] dans C# NET 3.5
Je prévois de sauvegarder l'image compressée dans le répertoire courant, de la décompresser et de charger le fichier décompressé sur le formulaire.
Le premier problème vient avec l'enregistrement du fichier (compressé). Le zlib peut l'enregistrer décompressé.
Le code ci-dessous charge le fichier compressé et l'enregistre après la décompression. Comment faire passer le tableau byte [] directement à cette fonction?
private void decompressFile(string inFile, string outFile)
{
System.IO.FileStream outFileStream = new System.IO.FileStream(outFile, System.IO.FileMode.Create);
zlib.ZOutputStream outZStream = new zlib.ZOutputStream(outFileStream);
System.IO.FileStream inFileStream = new System.IO.FileStream(inFile, System.IO.FileMode.Open);
try
{
CopyStream(inFileStream, outZStream);
}
finally
{
outZStream.Close();
outFileStream.Close();
inFileStream.Close();
}
}
public static void CopyStream(System.IO.Stream input, System.IO.Stream output)
{
byte[] buffer = new byte[2000];
int len;
while ((len = input.Read(buffer, 0, 2000)) > 0)
{
output.Write(buffer, 0, len);
}
output.Flush();
}
Comment passer le tableau byte [] directement à cette fonction? Je prévois de l'enregistrer en tant que compressé, puis appeler la fonction avec l'emplacement du fichier compressé, mais je ne sais pas comment enregistrer un fichier à partir d'un tableau byte [] ni un moyen de passer l'octet [] tableau en tant que fichier d'entrée.
Toute aide sera grandement appréciée.
Merci.
je ne comprenais pas que l'endroit où vous voulez passer l'octet [] pour? à la fonction CopyStream? –
Également dans while ((len = input.Read (buffer, 0, 2000))> 0) { output.Write (buffer, 0, len); } N'avez-vous pas à réajuster l'emplacement auquel vous voulez écrire le tampon? il écraserait de l'emplacement 0 toujours. –
En ce qui concerne la fonction CopyStream, c'est correct. Vous voulez toujours écrire à l'emplacement 0. Les paramètres supplémentaires déterminent l'emplacement de la copie dans le tampon. Mais nous copions toujours à partir de l'emplacement 0 dans le tampon à chaque fois dans la boucle. Par conséquent, nous voulons toujours écrire en sortie à partir de l'emplacement 0 dans le tampon. – Yuliy