首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ZXing to BitMap

ZXing to BitMap
EN

Stack Overflow用户
提问于 2017-05-17 14:12:16
回答 2查看 6.1K关注 0票数 3

我使用ZXing-Core(0.14.0.2)创建给我一个BitMatrix的条形码,但是我还没有找到文档,说明如何从BitMatrix中提取图像部分,并将其作为BitMap使用,这样我就可以将其合并到更大的图像中。最终我想要的是这样的结果:

我目前的代码是:

代码语言:javascript
复制
img = new Bitmap(300, 375);
drawing = Graphics.FromImage(img);
var barCode = new Code128Writer().encode(packageModel.TrackingId.PrintValue, BarcodeFormat.CODE_128, 280, 70);
src = transform **barCode** to **Drawing.Image**
drawing.DrawImage(src, new Rectangle(10, 255, 280, 70));

UPDATE我现在有了这段代码,但是我得到了一个错误--你必须设置一个呈现器实例。--我不明白为什么接口没有单独实例化这个类。没有任何文件可以说明这是如何工作的。我不能使用函数,因为呈现被设置为null,但是我不知道如何实例化它。

代码语言:javascript
复制
IBarcodeWriterGeneric<Image> barcodeWriterGeneric = new BarcodeWriterGeneric<Image>
{

      Format = BarcodeFormat.CODE_128,
      Options = new EncodingOptions
      {
            Width = 280,
            Height = 70
      },
      Renderer = new PixelData() //HOW DOES THE RENDERER WORK????
};

var test = barcodeWriterGeneric.Write("WORKS");
drawing.DrawImage(test, new Rectangle(10, 255, 280, 70));
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-17 19:35:24

据我所知,ZXing叉缺少PixelDataRenderer类。它只包含RawRenderer。您应该切换到当前版本为0.15.0的原始ZXing.Net包。其中一个包含条形码编写器类"BarcodeWriterPixelData“,它对Renderer属性进行必要的初始化。下一个版本的ZXing.Net将包含一些更专门的绑定到其他.Net核心兼容的成像库,如CoreCompat.System.Drawing、ImageSharp、OpenCV等。使用该绑定,您可以生成除PixelData之外的其他输出格式。

票数 1
EN

Stack Overflow用户

发布于 2018-08-27 12:27:53

创建一个实现IBarcodeRenderer<TOut>的呈现器。这个在iOS为我工作。

代码语言:javascript
复制
var writer = new BarcodeWriter<UIImage>()
{
    Format = ZXing.BarcodeFormat.CODE_128,
    Options = new EncodingOptions
    {
        Height = height,
        Width = width,
        Margin = 0
    },
    Renderer = new BarcodeRenderer()
};

var image = writer.Write(barcodeValue);



private class BarcodeRenderer : IBarcodeRenderer<UIImage>
{
    public UIImage Render(BitMatrix matrix, ZXing.BarcodeFormat format, string content)
    {
        return RenderMatrix(matrix);
    }

    public UIImage Render(BitMatrix matrix, ZXing.BarcodeFormat format, string content, EncodingOptions options)
    {
        return RenderMatrix(matrix);
    }
}

/// <summary>
/// Renders the bitmatrix.
/// </summary>
private static UIImage RenderMatrix(BitMatrix matrix)
{
    var width = matrix.Width;
    var height = matrix.Height;

    var black = new CGColor(0f, 0f, 0f);
    var white = new CGColor(1.0f, 1.0f, 1.0f);

    UIGraphics.BeginImageContext(new CGSize(width, height));
    var context = UIGraphics.GetCurrentContext();

    for (var x = 0; x < width; x++)
    {
        for (var y = 0; y < height; y++)
        {
            context.SetFillColor(matrix[x, y] ? black : white);
            context.FillRect(new CGRect(x, y, 1, 1));
        }
    }

    var img = UIGraphics.GetImageFromCurrentImageContext();

    UIGraphics.EndImageContext();

    return img;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44027328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档