2013-01-18 22 views
2

我基本上是在Visual Studio 2010 .NET 4.0中开发一个软件,在这里我通过一台PC捕获屏幕截图并通过网络将其发送到另一台。 由于我无法直接发送位图,因此必须将其转换为字符串。 我做了很多互联网搜索,但无法找到任何解决方案。 :(将位图图像转换为字符串格式以通过网络(LAN)发送,反之亦然

我发现这个代码在计算器本身。 但它不工作,我试图打印(从图像转换)的字符串,但该计划的行为就像该行犯规存在。 我用了一个MessageBox.Show(字符串); 但是即使有一个味精框弹出 任何人都可以请帮我卡 Thankx提前:)(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 
+0

为什么它必须是一个字符串而不仅仅是一个字节缓冲区? –

+2

您可以使用基于文本的编码发送它,但为什么不将图像作为二进制流发送? – gustavodidomenico

+0

实现这段代码的任何地方,你是否给它一个你想要转换的图像的路径? – cost

回答

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; - 然后将其传入上面的方法。

0

为什么它需要是一个字符串?你用什么方法通过网络发送?一个web服务?直接套接字?

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

如果你需要的是如何做到这一点,检查一些代码就像Sending and receiving an image over sockets with C#

0

你可以直接发送单个字节,但如果你真的想要一个字符串,你可以用base64的格式对它进行编码。以下是此格式的encoding todecoding from的msdn文档。你可以使用代码@AdamPlocher在他的答案中发布的图像转换为一个字节数组(它使我省略了1 +)

相关问题