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

本文关键字:LAN 网络 发送 反之亦然 转换 图像 位图 字符串 格式 | 更新日期: 2023-09-27 17:54:12

我基本上是在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

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

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

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

为什么需要是字符串?你用什么方法在网络上发送它?网络服务吗?直接套接字?

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

如果你需要一些如何做到这一点的代码,看看类似的问题在SO,像发送和接收图像通过套接字使用c#

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