Cha*_*art 2 javascript c# asp.net signalr
这是我的第一个ASP.NET应用程序,我在将服务器端Bitmap对象传递给JavaScript客户端时遇到问题.我正在使用SignalR连接服务器和客户端.
我已经尝试过几件事情,并希望对于拥有ASP.NET经验的人来说这很容易.
这是我的服务器端C#:
public void ScreenShot()
{
Rectangle bounds = this.Bounds;
using (Image bitmap = new Bitmap(bounds.Width, bounds.Height))
{
using (Graphics g = Graphics.FromImage(bitmap))
{
g.CopyFromScreen(new Point(bounds.Left, bounds.Top), Point.Empty, bounds.Size);
}
Clients.Caller.updateImage(bitmap);
}
}
Run Code Online (Sandbox Code Playgroud)
在客户端,我想获取位图并显示它:
hubproxy.client.updateImage = function (image) {
var img = document.createElement("img");
img.src = image;
document.body.appendChild(img);
};
Run Code Online (Sandbox Code Playgroud)
我必须将其转换为JSON对象吗?如果我这样做,如何将其恢复到客户端的图像?
在此先感谢您的帮助.
您可以将图像转换为字节数组:
public static byte[] ImageToByte(Image img)
{
ImageConverter converter = new ImageConverter();
return (byte[])converter.ConvertTo(img, typeof(byte[]));
}
Run Code Online (Sandbox Code Playgroud)
然后将它enocde到base64 - 你可以在html中使用base64作为图像源:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIA..." />
Run Code Online (Sandbox Code Playgroud)
另一种方法是将该图像保存在服务器上并仅返回到服务器上的路径的链接,您可以使用GUID之类的东西来生成唯一名称并定期清理旧图像或在客户端断开连接后进行清理等.这样做的优点是网络较小大图像上的流量 - 只需发送文件名即可节省约37%的流量.
| 归档时间: |
|
| 查看次数: |
1910 次 |
| 最近记录: |