示例#1
0
        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");
            }
        }
示例#2
0
        /// <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);
        }
示例#3
0
        /// <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));
        }
示例#4
0
        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)));
        }
示例#5
0
        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());
                }
            }
        }