在Javascript中将图像转换为内存流数据

时间:2015-09-17 07:09:30

标签: javascript c# jquery

我使用jquery.qrcode库生成一个qr代码图像。我按以下格式获取图像。

<img src="data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7"/>

我想打印此图像并添加一些文字(因为这是一个qrcode)。我知道在从C#的后端绘制图像时打印图像。无论如何我可以将此图像转换为内存流数据以发送到C#或者无论如何我可以在绘制图像时从Javascript打印?

2 个答案:

答案 0 :(得分:2)

使用ajax调用

发送您的图片base64网址 C#侧的

使用此功能

public Image Base64ToImage(string base64String)
{
  // Convert Base64 String to byte[]
  byte[] imageBytes = Convert.FromBase64String(base64String);
  MemoryStream ms = new MemoryStream(imageBytes, 0, 
    imageBytes.Length);

  // Convert byte[] to Image
  ms.Write(imageBytes, 0, imageBytes.Length);
  Image image = Image.FromStream(ms, true);
  return image;
}

答案 1 :(得分:0)

您可以直接从JavaScript打印,不需要转换或发送到c#。 c#位于后端,我相信你需要在前端(最终用户机器)上打印

您可以使用IFRAME并将文字添加到其中。

之后,您可以打印IFRAME。

http://jsfiddle.net/8gcz0dw7/

一个工作示例

iframe=document.createElement('iframe')
document.body.appendChild(iframe)
var co=iframe.contentDocument.body;
$(co).append('your text<img src="data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7"/>')
iframe.focus()
iframe.contentWindow.print()