public static void Output(string text) { const int threshold = 180; var writer = new ZXing.ImageSharp.BarcodeWriter <Rgba32> { Format = BarcodeFormat.QR_CODE, Options = new QrCodeEncodingOptions { Width = 33, Height = 33, Margin = 1 } }; var image = writer.WriteAsImageSharp <Rgba32>(text); int[,] points = new int[image.Width, image.Height]; for (var i = 0; i < image.Width; i++) { for (var j = 0; j < image.Height; j++) { //获取该像素点的RGB的颜色 var color = image[i, j]; if (color.B <= threshold) { points[i, j] = 1; } else { points[i, j] = 0; } } } for (var i = 0; i < image.Width; i++) { for (var j = 0; j < image.Height; j++) { //获取该像素点的RGB的颜色 if (points[i, j] == 0) { Console.BackgroundColor = ConsoleColor.Black; Console.ForegroundColor = ConsoleColor.Black; Console.Write(" "); Console.ResetColor(); } else { Console.BackgroundColor = ConsoleColor.White; Console.ForegroundColor = ConsoleColor.White; Console.Write(" "); Console.ResetColor(); } } Console.Write("\n"); } }
/// <summary> /// Async create barcode /// 异步创建条形码 /// </summary> /// <param name="stream">Stream to save the barcode</param> /// <param name="options">Options</param> /// <param name="token">Cancellation token</param> /// <returns>Task</returns> public static async Task CreateAsync(Stream stream, BarcodeOptions options, CancellationToken token = default) { var writer = new ZXing.ImageSharp.BarcodeWriter <Rgba32> { Format = ParseFormat(options.Type), Options = options, Renderer = new ZXing.ImageSharp.Rendering.ImageSharpRenderer <Rgba32> { Background = options.Background, Foreground = options.Foreground } }; using var image = writer.Write(options.Content); await image.SaveAsPngAsync(stream, token); }
/// <summary> /// Create barcode as Base64 string /// 将条形码创建为 Base64 字符串 /// </summary> /// <param name="options"Options>Options</param> /// <returns>String</returns> public static string Create(BarcodeOptions options) { var writer = new ZXing.ImageSharp.BarcodeWriter <Rgba32> { Format = ParseFormat(options.Type), Options = options, Renderer = new ZXing.ImageSharp.Rendering.ImageSharpRenderer <Rgba32> { Background = options.Background, Foreground = options.Foreground } }; using var image = writer.Write(options.Content); return(image.ToBase64String(PngFormat.Instance)); }
private Image <Bgr565> GetQrImage(string tt) { var writer = new ZXing.ImageSharp.BarcodeWriter <Bgr565> { Format = BarcodeFormat.QR_CODE }; writer.Options.Hints.Add(EncodeHintType.CHARACTER_SET, "UTF-8"); //编码问题 writer.Options.Hints.Add( EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H ); const int codeSizeInPixels = 500; //设置图片长宽 writer.Options.Height = writer.Options.Width = codeSizeInPixels; writer.Options.Margin = 1; //设置边框 return(writer.Write(writer.Encode(tt))); }
public byte[] Generate(string content, BarcodeType type, int?width, int?height, int?margin) { ZXing.BarcodeFormat barcodeFormat; switch (type) { case BarcodeType.AZTEC: barcodeFormat = ZXing.BarcodeFormat.AZTEC; break; case BarcodeType.CODABAR: barcodeFormat = ZXing.BarcodeFormat.CODABAR; break; case BarcodeType.CODE_39: barcodeFormat = ZXing.BarcodeFormat.CODE_39; break; case BarcodeType.CODE_93: barcodeFormat = ZXing.BarcodeFormat.CODE_93; break; case BarcodeType.CODE_128: barcodeFormat = ZXing.BarcodeFormat.CODE_128; break; case BarcodeType.DATA_MATRIX: barcodeFormat = ZXing.BarcodeFormat.DATA_MATRIX; break; case BarcodeType.EAN_8: barcodeFormat = ZXing.BarcodeFormat.EAN_8; break; case BarcodeType.EAN_13: barcodeFormat = ZXing.BarcodeFormat.EAN_13; break; case BarcodeType.ITF: barcodeFormat = ZXing.BarcodeFormat.ITF; break; case BarcodeType.MAXICODE: barcodeFormat = ZXing.BarcodeFormat.MAXICODE; break; case BarcodeType.PDF_417: barcodeFormat = ZXing.BarcodeFormat.PDF_417; break; case BarcodeType.QR_CODE: barcodeFormat = ZXing.BarcodeFormat.QR_CODE; break; case BarcodeType.RSS_14: barcodeFormat = ZXing.BarcodeFormat.RSS_14; break; case BarcodeType.RSS_EXPANDED: barcodeFormat = ZXing.BarcodeFormat.RSS_EXPANDED; break; case BarcodeType.UPC_A: barcodeFormat = ZXing.BarcodeFormat.UPC_A; break; case BarcodeType.UPC_E: barcodeFormat = ZXing.BarcodeFormat.UPC_E; break; case BarcodeType.UPC_EAN_EXTENSION: barcodeFormat = ZXing.BarcodeFormat.UPC_EAN_EXTENSION; break; case BarcodeType.MSI: barcodeFormat = ZXing.BarcodeFormat.MSI; break; case BarcodeType.PLESSEY: barcodeFormat = ZXing.BarcodeFormat.PLESSEY; break; case BarcodeType.IMB: barcodeFormat = ZXing.BarcodeFormat.IMB; break; default: throw new ArgumentException(); } var barcodeWriter = new ZXing.ImageSharp.BarcodeWriter <Rgba32> { Format = barcodeFormat }; if (width.HasValue || height.HasValue || margin.HasValue) { barcodeWriter.Options = new EncodingOptions(); if (width.HasValue) { barcodeWriter.Options.Width = width.Value; } if (height.HasValue) { barcodeWriter.Options.Height = height.Value; } if (margin.HasValue) { barcodeWriter.Options.Margin = margin.Value; } } using (var image = barcodeWriter.Write(content)) { using (var stream = new MemoryStream()) { image.SaveAsPng(stream); return(stream.ToArray()); } } }