2

我基本上是在 Visual Studio 2010 .NET 4.0 中开发一个软件,在其中我从一台 pc 捕获屏幕截图并通过网络将其发送到另一个。由于我不能直接发送位图,我必须将其转换为字符串。我做了很多互联网搜索,但找不到任何解决方案。:(

我在stackoverflow本身上找到了这段代码。但它不起作用。我试图打印字符串(从图像转换),但程序的行为就像该行不存在一样。我使用了 MessageBox.Show(String); 但甚至没有弹出一个消息框!有人可以帮忙吗?我被困住了!提前谢谢 :) (Y)

bitmapString = null;       // Conversion from image to string
MemoryStream memoryStream = new MemoryStream();
bmpScreenshot.Save(memoryStream, ImageFormat.Png);
byte[] bitmapBytes = memoryStream.GetBuffer();
bitmapString = Convert.ToBase64String(bitmapBytes,Base64FormattingOptions.InsertLineBreaks); // Conversion from image to string end

Image img = null;                           //Conversion from string to image
byte[] bitmapBytes = Convert.FromBase64String(rob);
MemoryStream memoryStream = new MemoryStream(bitmapBytes);
img = Image.FromStream(memoryStream);   //Conversion from string to image end
4

3 回答 3

4

尝试将其转换为字节数组:

public static byte[] ImageToByteArray(Image img)
{
    byte[] byteArray = new byte[0];
    using (MemoryStream stream = new MemoryStream())
    {
        img.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
        stream.Close();

        byteArray = stream.ToArray();
    }
    return byteArray;
}

我相信您可以简单地将 Bitmap 对象转换为 Image 对象。所以Image img = (Image)myBitmap;- 然后将它传递给上面的方法。

于 2013-01-18T19:39:29.443 回答
0

您可以直接发送单个字节,但如果您真的想要一个字符串,您可以将其编码为一种名为base64的格式。这是用于对该格式进行编码解码的 msdn 文档。您可以使用在他的答案中发布的代码@AdamPlocher 将图像转换为字节数组(我 +1'ed 因为他让我免于这样做;))

于 2013-01-18T19:41:41.907 回答
0

为什么它需要是一个字符串?您使用什么方法通过网络发送它?网络服务?直接插座?

不管您如何发送它,最好的方法是将其转换为字节数组,然后通过网络传递该数组

如果您需要一些如何执行此操作的代码,请查看 SO 上的类似问题,例如使用 C# 通过套接字发送和接收图像

于 2013-01-18T19:41:08.923 回答