내 TCP 클라이언트가 패킷 내 이미지를 수신합니다. 이미지는 zlib로 압축됩니다.이 작업은 이미지 압축을 풀고 양식에 저장하는 것입니다.C# NET 3.5의 바이트 []에서 파일 저장
압축 된 이미지를 현재 디렉토리에 저장하고 압축을 풀고 양식에 압축 해제 된 파일을로드 할 계획입니다.
첫 번째 문제는 (압축 된) 파일을 저장하는 것입니다. 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();
}
바이트 [] 배열을 해당 함수에 직접 전달하는 방법은 무엇입니까? 압축 된 파일로 저장하고 압축 된 파일의 위치로 함수를 호출 할 계획이지만 바이트 [] 배열에서 파일을 저장하는 방법이나 바이트 []를 전달하는 방법을 알지 못합니다. 배열을 입력 파일로 사용하십시오.
도움이 될 것입니다.
감사합니다.
? CopyStream 함수에? –
또한 에서 ((len = input.Read (buffer, 0, 2000))> 0) { output.Write (buffer, 0, len); } 버퍼를 쓰려는 위치를 다시 조정할 필요가 없습니까? 항상 위치 0에서 쓰려고합니다. –
CopyStream 함수는 정확합니다. 여분의 매개 변수는 버퍼에서 복사 할 위치를 제어합니다. 그러나 우리는 항상 루프를 통해 매번 버퍼의 위치 0부터 시작하여 복사합니다. 결과적으로, 우리는 항상 버퍼의 위치 0부터 시작하여 출력에 쓰려고합니다. – Yuliy