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

Convert Image to Memory Stream data in Javascript

本文关键字:内存 数据 图像 Javascript 转换      更新时间:2023-09-26

我使用jquery生成qr码图像。qrcode图书馆。我得到了以下格式的图像。

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

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

使用ajax调用发送您的图像base64 url

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;
}

你可以直接从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()