将生成的条形码传递给html标记

时间:2017-03-15 16:29:38

标签: asp.net

我有我的功能:

protected void Button1_Click(object sender, EventArgs e)
{        
    var barcodeWriter = new BarcodeWriter();
    var encOptions = new ZXing.Common.EncodingOptions() { Width = 200, Height = 200, Margin = 0 };
    barcodeWriter.Options = encOptions;
    barcodeWriter.Format = BarcodeFormat.CODE_128;
    var resultBitmap = new Bitmap(barcodeWriter.Write("hello"));

    resultBitmap.Save(@"C:\Users\lrusin\Documents\Visual Studio 2015\Projects\prova_eti\asd.bmp");
}

生成条形码图像,现在将其保存到我的文件系统中的某个文件夹中 我想知道是否有办法将生成的图像(不是保存在C:\ ...中的图像)放入像div或列表这样的HTML容器中。
在我的例子中,我将有一个按钮,当点击时加载到div中由上面写的代码生成的图像。

1 个答案:

答案 0 :(得分:1)

最简单的方法是将生成的位图加载到MemoryStream以获取Byte Array。然后将数组转换为Base64以便以HTML格式显示。在下面的代码段中,我为演示目的生成位图。

//create a new empty bitmap
Bitmap resultBitmap = new Bitmap(100, 100);

//fill the bitmap with a red cirle
using (Graphics g = Graphics.FromImage(resultBitmap))
{    
    g.FillEllipse(Brushes.Red, 10, 10, 80, 80);
}

//no explanation needed here
string base64Image = string.Empty;

//load the bitmap into the memorystream
using (MemoryStream ms = new MemoryStream())
{
    resultBitmap.Save(ms, ImageFormat.Bmp);

    //get the byte array from the stream and convert to Base64
    base64Image = Convert.ToBase64String(ms.ToArray());
}

//display the result
Image1.ImageUrl = "data:image/jpeg;base64," + base64Image;

然而,BarcodeWriter可能有一些内置函数直接执行此操作...