Il mio client TCP riceve un'immagine all'interno di un pacchetto. L'immagine viene compressa con zlib. L'attività è decomprimere l'immagine e inserirla nel modulo.Salva file da un byte [] in C# NET 3.5
Sto pianificando di salvare l'immagine compressa nella directory corrente, decomprimerla e caricare il file decompresso nel modulo.
Il primo problema viene fornito con il salvataggio del file (compresso). Lo zlib può salvarlo decompresso.
Il codice seguente carica il file compresso e lo salva dopo la decompressione.
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();
}
Come passare l'array byte [] direttamente a tale funzione? Sto pianificando di salvarlo come compresso e quindi di chiamare la funzione con la posizione del file compresso, ma non so né come salvare un file da una matrice di byte [] né come passare il byte [] array come file di input.
Qualsiasi aiuto sarà molto apprezzato.
Grazie.
non ho capito come in cui si desidera passare il byte [] per? alla funzione CopyStream? –
anche in while ((len = input.Read (buffer, 0, 2000))> 0) { output.Write (buffer, 0, len); } non è necessario regolare nuovamente la posizione in cui si desidera scrivere il buffer? scriveva sempre dalla posizione 0 sempre. –
Per quanto riguarda la funzione CopyStream, è corretta. Si desidera sempre scrivere nella posizione 0. I parametri aggiuntivi determinano da dove nel buffer copiare. Ma copiamo sempre dall'inizio a 0 nel buffer ogni volta attraverso il ciclo. Di conseguenza, vogliamo sempre scrivere sull'output a partire dalla posizione 0 nel buffer. – Yuliy