我的TCP客户端在一个数据包中接收到一张图片。这张图片被zlib压缩。任务是解压缩图片并将其放置在表单上。
我计划将这个压缩的图片保存在当前目录中,进行解压缩,然后加载解压后的文件到表单上。
第一个问题出现在保存文件(压缩文件)时。zlib可以将其保存为未压缩格式。
下面的代码将加载压缩文件并在解压缩后保存它。
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();
}
如何直接将byte[]数组传递给该函数?
我计划将其保存为压缩文件,然后使用压缩文件的位置调用函数,但我不知道如何从byte[]数组中保存文件,也不知道将byte[]数组作为输入文件传递的方法。
非常感谢您提供的任何帮助。
谢谢。
output.Write(buffer, 0, len);
} 你不需要重新调整写入缓冲区的位置吗?它总是从位置0开始覆盖。 - Anirudh Goel