C# - 将位图转换为字节数组

3

我有一个方法,可以保存面板上的图像。这个方法使用了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;
    }

你为什么返回 Null 的 byteContent?在代码中你在哪里使用或分配 byteContent? - MethodMan
2
将位图保存到内存流中,然后设置 byteContent = stream.ToArray(); - Brandon Moretz
https://dev59.com/sms05IYBdhLWcg3wQvoe - Kevin
@DJ KRAZE 实际上我有意地将 null 返回给字节数组变量,因为我不知道如何将其分配给字节数组。 - user1399377
你为什么要指出“wpf”作为标签?WPF中的位图处理完全不同! - user287107
1个回答

20

您需要使用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();
    }
}

您可以选择多种输出格式,可能会更喜欢 Bmp 或 MemoryBmp


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接