Refactor QRCodeHelper

pull/5636/head
2dust 2024-08-28 10:20:37 +08:00
parent 54c16cad7d
commit 6721d150e0
4 changed files with 39 additions and 10 deletions

View File

@ -0,0 +1,15 @@
using QRCoder;
namespace ServiceLib.Common
{
public class QRCodeHelper
{
public static byte[]? GenQRCode(string? url)
{
using QRCodeGenerator qrGenerator = new();
using QRCodeData qrCodeData = qrGenerator.CreateQrCode(url ?? string.Empty, QRCodeGenerator.ECCLevel.Q);
using PngByteQRCode qrCode = new(qrCodeData);
return qrCode.GetGraphic(20);
}
}
}

View File

@ -13,6 +13,7 @@
<PackageReference Include="sqlite-net-pcl" Version="1.9.172" />
<PackageReference Include="Splat.NLog" Version="15.1.1" />
<PackageReference Include="YamlDotNet" Version="16.0.0" />
<PackageReference Include="QRCoder" Version="1.6.0" />
</ItemGroup>
<ItemGroup>

View File

@ -1,9 +1,9 @@
using QRCoder;
using QRCoder.Xaml;
using System.Drawing;
using System.Drawing;
using System.IO;
using System.Windows;
using System.Windows.Interop;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using ZXing;
using ZXing.Common;
using ZXing.QrCode;
@ -16,7 +16,7 @@ namespace v2rayN
/// </summary>
public class QRCodeHelper
{
public static DrawingImage? GetQRCode(string? strContent)
public static ImageSource? GetQRCode(string? strContent)
{
if (strContent is null)
{
@ -24,11 +24,12 @@ namespace v2rayN
}
try
{
QRCodeGenerator qrGenerator = new();
QRCodeData qrCodeData = qrGenerator.CreateQrCode(strContent, QRCodeGenerator.ECCLevel.H);
XamlQRCode qrCode = new(qrCodeData);
DrawingImage qrCodeAsXaml = qrCode.GetGraphic(40);
return qrCodeAsXaml;
var qrCodeImage = ServiceLib.Common.QRCodeHelper.GenQRCode(strContent);
if (qrCodeImage is null)
{
return null;
}
return ByteToImage(qrCodeImage);
}
catch
{
@ -36,6 +37,19 @@ namespace v2rayN
}
}
private static ImageSource ByteToImage(byte[] imageData)
{
BitmapImage biImg = new();
MemoryStream ms = new(imageData);
biImg.BeginInit();
biImg.StreamSource = ms;
biImg.EndInit();
ImageSource imgSrc = biImg as ImageSource;
return imgSrc;
}
public static string ScanScreen(float dpiX, float dpiY)
{
try

View File

@ -17,7 +17,6 @@
<ItemGroup>
<PackageReference Include="MaterialDesignThemes" Version="5.1.0" />
<PackageReference Include="H.NotifyIcon.Wpf" Version="2.1.2" />
<PackageReference Include="QRCoder.Xaml" Version="1.6.0" />
<PackageReference Include="TaskScheduler" Version="2.11.0" />
<PackageReference Include="ZXing.Net.Bindings.Windows.Compatibility" Version="0.16.12" />
<PackageReference Include="ReactiveUI.Fody" Version="19.5.41" />