我正在尝试生成条形码图像。当我使用以下代码时,我可以创建一个base64
字符串,但它会给出一个空白图像。我检查了内容不是空白或空白。
有代码使用CoreCompat.System.Drawing
,但我无法使其工作,因为我在 OS X 环境中工作。
难道我做错了什么?
代码:
[HtmlTargetElement("barcode")]
public class BarcodeHelper: TagHelper {
public override void Process(TagHelperContext context, TagHelperOutput output) {
var content = context.AllAttributes["content"].Value.ToString();
var alt = context.AllAttributes["alt"].Value.ToString();
var width = 250;
var height = 250;
var margin = 0;
var barcodeWriter = new ZXing.BarcodeWriterPixelData {
Format = ZXing.BarcodeFormat.CODE_128,
Options = new QrCodeEncodingOptions {
Height = height, Width = width, Margin = margin
}
};
var pixelData = barcodeWriter.Write(content);
using (var image = Image.LoadPixelData<Rgba32>(pixelData.Pixels, width, height))
{
output.TagName = "img";
output.Attributes.Clear();
output.Attributes.Add("width", width);
output.Attributes.Add("height", height);
output.Attributes.Add("alt", alt);
output.Attributes.Add("src", string.Format("data:image/png;base64,{0}", image.ToBase64String(ImageFormats.Png)));
}
}
}
有一些代码片段如下所示。他们可以编写内容并轻松地将结果数据转换为base64
字符串。但是当我调用BarcodeWriter
它时,它需要一种<TOutput>
我不知道要发送什么的类型。我正在使用ZXing.Net
0.16.2。
var writer = BarcodeWriter // BarcodeWriter without <TOutput> is missing. There is BarcodeWriter<TOutput> I can call.
{
Format = BarcodeFormat.CODE_128
}
var result = writer.write("content");