正如標題所說,我有一個例外的問題。 「System.ArgumentException」。我得到它時,我試圖將字節數組轉換爲位圖圖像。這裏是拋出異常的代碼:參數無效內存流。 image.FromStream C#
MemoryStream ms = new MemoryStream(Buffer);
ms.Position = 0;
bmp = new Bitmap(ms);
pictureBox1.Image = bmp;
我也試過用圖像轉換器。而改爲bmp = new Bitmap(ms);
使用此bmp = (Bitmap)image.FromStream(ms);
有趣的是,如果我會把任何這些(無論是與內存流或圖像轉換器)內的try catch塊。它會創建圖像,但它往往會遺漏一些部分(例如圖像的一半是可見的),但有時它會創建完整的圖像,並且在輸出中它仍然會說異常已被拋出..並引發異常。 - 對不起語法。 - 是的,我沒有嘗試尋找我的問題的解決方案,但我沒有找到任何東西
編輯: 看起來我忘了一些部分問題所以我這裏做。我正在做項目,將桌面圖像發送到另一個項目,併爲此,它需要發送字節...如果我會把那File.WriteAllBytes
測試到第一個示例代碼ive添加失敗。但在發送它的一方工作。這是獲取桌面的圖像變成EM的字節代碼
using (var stream = new MemoryStream())
{
bmp.Save(stream, ImageFormat.Jpeg);
Buffer = stream.ToArray();
}
而在堆棧跟蹤它說的例外是在System.Drawing.Bitmap..ctor(流流)被拋出..
編輯2: 接收緩衝器:
int ArraySize = acc.Receive(Buffer, 0, Buffer.Length, 0);
Array.Resize(ref Buffer, ArraySize);
MemoryStream ms = new MemoryStream(Buffer);
ms.Position = 0;
bmp = new Bitmap(ms);
pictureBox1.Image = bmp; //Dont mind the naming
發送緩衝器:
bmp = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
Graphics g = Graphics.FromImage(bmp);
g.CopyFromScreen(0, 0, 0, 0, bmp.Size);
using (var stream = new MemoryStream())
{
bmp.Save(stream, ImageFormat.Jpeg);
stream.Flush();
acc.Send(stream.ToArray());
}//Dont mind the naming
當然還有插座之間的背景連接等。
字節數組中有什麼? – adv12
您可能想要共享創建「緩衝區」的代碼,該問題很可能源於此處。 –
作爲正確性的快速檢查,您可以使用適當的文件擴展名來調用'File.WriteAllBytes(filename,byteArray)'。如果打開文件時文件亂了,那麼你的字節數組內容有問題。 – JamieSee