2012-09-28 53 views
2

我有一個方法可以從面板保存圖像。此方法使用Bitmap類。我希望我的方法應該返回圖像的字節數組。C#-Bitmap到字節數組

private byte[] SaveImage() 
    { 
     byte[] byteContent = null; 
     using (Bitmap bitmap = new Bitmap(500, 500)) 
     { 
      using (Graphics g = Graphics.FromImage(bitmap)) 
      { 
       Rectangle rectangle = myPanel.Bounds; 
       Point sourcePoints = myPanel.PointToScreen(new Point(myPanel.ClientRectangle.X, myPanel.ClientRectangle.Y)); 
       g.CopyFromScreen(sourcePoints, Point.Empty, rectangle.Size); 
      } 

      string fileName = @"E:\\MyImages.Jpg"; 
      bitmap.Save(fileName, System.Drawing.Imaging.ImageFormat.Jpeg); 
     } 
     return byteContent; 
    } 
+0

你爲什麼要返回空字節內容?在代碼中你使用或分配byteContent ..? – MethodMan

+2

將位圖保存到內存流並設置byteContent = stream.ToArray(); –

+0

http://stackoverflow.com/questions/7350679/convert-a-bitmap-into-a-byte-array-in-c – Kevin

回答

13

您需要使用MemoryStream將位圖序列化爲圖像格式並獲取字節;

using (Bitmap bitmap = new Bitmap(500, 500)) 
{ 
    using (Graphics g = Graphics.FromImage(bitmap)) 
    { 
     ... 
    } 

    using (var memoryStream = new MemoryStream()) 
    { 
     bitmap.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Jpeg); 
     return memoryStream.ToArray(); 
    } 
} 

還有multiple output formats to choose from, you may instead want Bmp or MemoryBmp

+0

感謝Joachim ......現在我得到了字節數組。 – user1399377