|
1 | 1 | #!/usr/bin/env dotnet-script |
2 | 2 |
|
3 | | -#r "nuget: QRCoder" |
| 3 | +#r "nuget: ZXing.Net, 0.16.9" |
| 4 | +#r "nuget: ZXing.Net.Bindings.SkiaSharp, 0.16.9" |
| 5 | +#r "nuget: SkiaSharp, 2.88.3" |
4 | 6 |
|
5 | | -using QRCoder; |
6 | 7 | using System; |
7 | 8 | using System.IO; |
| 9 | +using ZXing; |
| 10 | +using ZXing.QrCode; |
| 11 | +using ZXing.SkiaSharp; |
| 12 | +using ZXing.SkiaSharp.Rendering; |
| 13 | +using SkiaSharp; |
8 | 14 |
|
9 | | -if (args.Length != 2) |
| 15 | +if (Args.Count != 2) |
10 | 16 | { |
11 | 17 | Console.WriteLine("Usage: dotnet-script generate-qr.csx <url> <output-file>"); |
12 | 18 | return; |
13 | 19 | } |
14 | 20 |
|
15 | | -string url = args[0]; |
16 | | -string outputFile = args[1]; |
| 21 | +string url = Args[0]; |
| 22 | +string outputFile = Args[1]; |
17 | 23 |
|
18 | | -QRCodeGenerator qrGenerator = new QRCodeGenerator(); |
19 | | -QRCodeData qrCodeData = qrGenerator.CreateQrCode(url, QRCodeGenerator.ECCLevel.Q); |
20 | | -PngByteQRCode qrCode = new PngByteQRCode(qrCodeData); |
21 | | -byte[] qrCodeImage = qrCode.GetGraphic(20); |
| 24 | +var qrCodeEncodingOptions = new QrCodeEncodingOptions |
| 25 | +{ |
| 26 | + Height = 512, |
| 27 | + Width = 512, |
| 28 | + Margin = 4 |
| 29 | +}; |
| 30 | + |
| 31 | +var barcodeWriter = new BarcodeWriter<SKBitmap> |
| 32 | +{ |
| 33 | + Format = BarcodeFormat.QR_CODE, |
| 34 | + Options = qrCodeEncodingOptions, |
| 35 | + Renderer = new SKBitmapRenderer() |
| 36 | +}; |
| 37 | + |
| 38 | +using (var bitmap = barcodeWriter.Write(url)) |
| 39 | +{ |
| 40 | + using (var image = SKImage.FromBitmap(bitmap)) |
| 41 | + using (var data = image.Encode(SKEncodedImageFormat.Png, 100)) |
| 42 | + using (var stream = File.OpenWrite(outputFile)) |
| 43 | + { |
| 44 | + data.SaveTo(stream); |
| 45 | + } |
| 46 | +} |
22 | 47 |
|
23 | | -File.WriteAllBytes(outputFile, qrCodeImage); |
24 | 48 | Console.WriteLine($"QR Code saved to {outputFile}"); |
0 commit comments