Máy khách TCP của tôi nhận được một hình ảnh trong một gói. Hình ảnh được nén bằng zlib. Nhiệm vụ là giải nén hình ảnh và đặt nó vào biểu mẫu.Lưu tập tin từ một byte [] trong C# NET 3.5
Tôi đang lập kế hoạch lưu hình ảnh đã nén vào thư mục hiện tại, giải nén và tải tệp giải nén trên biểu mẫu.
Sự cố đầu tiên đi kèm với việc lưu tệp (được nén) .Bộ lọc zlib có thể lưu nó giải nén.
Mã bên dưới tải tệp nén và lưu sau khi giải né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();
}
Làm thế nào để chuyển mảng byte [] trực tiếp đến chức năng đó? Tôi đang lập kế hoạch để lưu nó dưới dạng nén và sau đó gọi hàm với vị trí của tệp nén, nhưng tôi không biết cách lưu tệp từ mảng byte [] cũng như cách để chuyển byte [] mảng làm tệp đầu vào.
Mọi trợ giúp sẽ được đánh giá cao.
Cảm ơn.
tôi không hiểu là nơi bạn muốn vượt qua byte [] để? vào chức năng CopyStream? –
Cũng trong trong khi ((len = input.Read (buffer, 0, 2000))> 0) { output.Write (buffer, 0, len); } bạn không phải điều chỉnh lại vị trí mà bạn muốn ghi bộ đệm? nó sẽ ghi đè lên từ vị trí 0 luôn. –
Về chức năng CopyStream, nó là chính xác. Bạn luôn muốn ghi vào vị trí 0. Các tham số phụ sẽ điều chỉnh vị trí trong bộ đệm để sao chép từ đó. Nhưng chúng tôi luôn luôn sao chép bắt đầu từ vị trí 0 trong bộ đệm mỗi lần qua vòng lặp. Kết quả là, chúng tôi luôn muốn ghi vào đầu ra bắt đầu từ vị trí 0 trong bộ đệm. – Yuliy