将位图图像转换为String格式以通过网络(LAN)发送,反之亦然

时间:2013-01-18 19:36:27

标签: c# .net-remoting remoteobject

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

我在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

3 个答案:

答案 0 :(得分: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; - 然后将其传递给上面的方法。

答案 1 :(得分:0)

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

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

如果您需要一些如何执行此操作的代码,请查看有关SO的类似问题,例如Sending and receiving an image over sockets with C#

答案 2 :(得分:0)

您可以直接发送单个字节,但如果您真的需要字符串,则可以使用base64格式对其进行编码。这是encoding todecoding from这种格式的msdn文档。您可以使用代码@AdamPlocher将图像转换为字节数组,该代码在他的答案中贴出来(我保留了我这样做时我就加上了这个;)