我基本上是在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
答案 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 to和decoding from这种格式的msdn文档。您可以使用代码@AdamPlocher将图像转换为字节数组,该代码在他的答案中贴出来(我保留了我这样做时我就加上了这个;)