Mein TCP-Client empfängt ein Bild innerhalb eines Pakets. Das Bild wird mit zlib komprimiert. Die Aufgabe besteht darin, das Bild zu dekomprimieren und es in das Formular einzufügen.Datei aus einem Byte speichern [] in C# NET 3.5
Ich plane, das komprimierte Bild im aktuellen Verzeichnis zu speichern, entpacken Sie es und die entpackte Datei auf dem Formular zu laden.
Das erste Problem kommt die Datei mit dem Speichern (komprimiert) .Die zlib kann es dekomprimiert speichern.
Der folgende Code lädt die komprimierte Datei und speichert sie nach der Dekomprimierung.
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();
}
Wie die byte [] Array dieser Funktion direkt passieren? Ich plane, es als komprimiert zu speichern und dann die Funktion mit dem Speicherort der komprimierten Datei aufzurufen, aber ich weiß weder, wie eine Datei aus einem byte [] -Array gespeichert wird, noch eine Möglichkeit, das Byte [] zu übergeben Array als Eingabedatei.
Jede Hilfe wird sehr geschätzt.
Danke.
Ich verstehe nicht, wie, wo Sie die byte [] zu übergeben möchten? zur CopyStream-Funktion? –
Auch in while ((len = input.Read (Puffer, 0, 2000))> 0) { output.Write (Puffer, 0, len); } müssen Sie den Speicherort, an den Sie den Puffer schreiben möchten, nicht erneut anpassen? Es würde immer von Ort 0 schreiben. –
In Bezug auf die CopyStream-Funktion ist es korrekt. Sie möchten immer auf Position 0 schreiben. Die zusätzlichen Parameter bestimmen, wo im Puffer kopiert werden soll. Aber wir kopieren immer über die Position 0 im Puffer jedes Mal durch die Schleife. Als Ergebnis wollen wir immer in die Ausgabe schreiben, beginnend mit der Position 0 im Puffer. – Yuliy