Mi cliente TCP recibe una imagen de una imagen packet.The se comprime con la tarea dentro zlib.The es descomprimir la imagen y ponerla en el formulario.Guardar archivo de un byte [] en C# NET 3.5
tengo la intención de guardar la imagen comprimida en el directorio actual, descomprimirlo y cargar el archivo descomprimido en el formulario.
El primer problema viene con guardar el archivo (comprimido) .El zlib puede guardarlo descomprimido.
El código siguiente carga el archivo comprimido y lo guarda después de la descompresión.
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();
}
¿Cómo pasar la matriz byte [] directamente a esa función? Estoy planeando guardarlo como comprimido y luego llamar a la función con la ubicación del archivo comprimido, pero no sé cómo guardar un archivo de una matriz de bytes [] ni una forma de pasar el byte [] array como el archivo de entrada.
Cualquier ayuda será muy apreciada.
Gracias.
yo no entiendo como la que desea pasar el byte [] para? a la función CopyStream? –
También en while ((len = input.Read (buffer, 0, 2000))> 0) { output.Write (buffer, 0, len); } ¿no tiene que volver a ajustar la ubicación en la que desea escribir el búfer? escribiría más desde la ubicación 0 siempre. –
Con respecto a la función CopyStream, es correcta. Siempre desea escribir en la ubicación 0. Los parámetros adicionales gobiernan en qué parte del búfer se debe copiar. Pero siempre copiamos comenzando en la ubicación 0 en el búfer cada vez que pasa el bucle. Como resultado, siempre queremos escribir en la salida comenzando desde la ubicación 0 en el búfer. – Yuliy