2012-09-28 48 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