我在上一個問題中獲得了關於如何發送圖像的幫助。 所做的事情是首先發送圖像的長度(大小),然後發送實際圖像,然後知道它何時完成。NetworkStream在我的代碼中我不明白
它看起來像這樣:
BinaryWriter writer = new BinaryWriter(netStream);
while (someCondition) {
Image img = SomeImage();
MemoryStream ms = new MemoryStream();
img.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
byte[] buffer = new byte[ms.Length];
ms.Seek(0, SeekOrigin.Begin);
ms.Read(buffer, 0, buffer.Length);
writer.Write(buffer.Length);
writer.Write(buffer);
此代碼是:安傑洛Geels,誰在我剛纔的問題幫助了我。
現在,我試圖用某種方式來優化它。而且,它的工作原理。但只有當文件是BMP(未壓縮),我不知道爲什麼。
using (MemoryStream ms = PrintWindow(process))
{
writer.Write((int)ms.Length);
writer.Write(ms.GetBuffer());
}
因此PrintWindow將圖像保存到內存流並返回它。所以ms = memorystream與我的圖像在裏面。
因此,對於我來說,這應該是完美的,造成形式,我可以讓我做同樣的事情。
我發送文件的大小(內存流的長度)。 然後我發送字節[]數據在內存中。
所以,它是一樣的東西。
但是,它只適用於bmp。
我唯一能想到的是,當我以壓縮格式保存時,bmp首先被編寫,然後被編碼,這弄亂了getbuffer()或其他東西。
但我仍然認爲它應該工作。
該代碼塊中缺少對使用情況的深刻關注。 – Xcelled194