Asp.net core 使用ZXing.net生成条形码

Asp.net core 使用ZXing.net生成条形码,asp.net-core,zxing.net,Asp.net Core,Zxing.net,我正在尝试使用ZXing.NET为dot NET核心asp.NET应用程序生成条形码。我不知道如何显示带有条形码的文本,而且文档似乎非常非常缺乏。有人知道如何让它工作吗 这是我的代码(主要是从另一篇关于SO的帖子中获得的): 这会给我一个条形码,但没有内容 或者,建议更好/更易于使用/更好地记录库也将不胜感激。您不需要手动将这些像素数据复制到另一个流。总是喜欢使用接口提供的方法,即Save()方法 public void YourActionMethod() { BarcodeWrite

我正在尝试使用ZXing.NET为dot NET核心asp.NET应用程序生成条形码。我不知道如何显示带有条形码的文本,而且文档似乎非常非常缺乏。有人知道如何让它工作吗

这是我的代码(主要是从另一篇关于SO的帖子中获得的):

这会给我一个条形码,但没有内容


或者,建议更好/更易于使用/更好地记录库也将不胜感激。

您不需要手动将这些像素数据复制到另一个流。总是喜欢使用接口提供的方法,即
Save()
方法

public void YourActionMethod()
{
    BarcodeWriter writer = new BarcodeWriter(){
        Format = BarcodeFormat.CODE_128,
        Options = new EncodingOptions {
            Height = 400,
            Width = 800,
            PureBarcode = false,
            Margin = 10,
        },
    };

    var bitmap = writer.Write("test text");
    bitmap.Save(HttpContext.Response.Body,System.Drawing.Imaging.ImageFormat.Png);
    return; // there's no need to return a `FileContentResult` by `File(...);`
}
演示:


并非所有可用的渲染器实现都支持条形码下方内容的输出(例如,PixelData渲染器不支持它)。 您应该为不同的图像库使用其中一个特定实现。 例如,以下绑定提供程序是支持内容输出的渲染器(和特定条形码编写器):

我不使用Save,因为这是一个web应用程序,我只需要将条形码图像返回给客户端。@Evgeni这里的
Save()
方法将接受http响应流作为参数,然后将条形码图像返回给客户端。看截图,我一定是遗漏了什么。尝试上面的代码时,我得到一个编译错误,表示BarcodeWriter是泛型的,需要一个类型参数。我尝试过使用条形码编写器,在这一点上它需要我指定一个渲染器。似乎没有位图渲染器。我可以使用PixelData,但PixelData的Save方法没有写入流的重载。我是不是在一个错误的名称空间?@Evgeni如果你查看,你会发现作者引用了一个compat库进行绘图。只需添加对
ZXing.Net.Bindings.CoreCompat.System.Drawing
的引用,并通过
使用ZXing使用名称空间;使用ZXing.Common;使用ZXing.CoreCompat.System.Drawing出于某种原因
位图.Save(HttpContext.Response.Body,System.Drawing.Imaging.ImageFormat.Png)不会向我这边的流返回任何内容。
public void YourActionMethod()
{
    BarcodeWriter writer = new BarcodeWriter(){
        Format = BarcodeFormat.CODE_128,
        Options = new EncodingOptions {
            Height = 400,
            Width = 800,
            PureBarcode = false,
            Margin = 10,
        },
    };

    var bitmap = writer.Write("test text");
    bitmap.Save(HttpContext.Response.Body,System.Drawing.Imaging.ImageFormat.Png);
    return; // there's no need to return a `FileContentResult` by `File(...);`
}