バーコードイメージを生成しようとしています。次のコードを使用すると、base64
文字列を作成できますが、空白のイメージが表示されます。内容が空白でないか、空白でないかを確認しました。.NET Core 2.0でXZing.NetとImageSharpでバーコードイメージを作成するには
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");
マイケルさんの詳細な回答ありがとうございました。 –