/// <summary> /// 获取二维码 /// </summary> /// <param name="Foreground">前景颜色</param> /// <param name="Background">背景颜色</param> /// <param name="IsBorderVisable">是否使用边框</param> /// <returns>二维码位图</returns> public static Bitmap GetQrcode(Color Foreground, Color Background, bool IsBorderVisable) { Bitmap qrCodeImage = null; re: //获取二维码要包含的url string str = Http.GetBody("https://passport.bilibili.com/qrcode/getLoginUrl", null, "https://passport.bilibili.com/login", $"BiliAccount/{Config.Dll_Version}"); if (!string.IsNullOrEmpty(str)) { #if NETSTANDARD2_0 || NETCORE3_0 GetQrcode_DataTemplete obj = JsonConvert.DeserializeObject <GetQrcode_DataTemplete>(str); #else GetQrcode_DataTemplete obj = (new JavaScriptSerializer()).Deserialize <GetQrcode_DataTemplete>(str); #endif if (obj.code == 0) { // 生成二维码的内容 string strCode = obj.data.url; QRCodeGenerator qrGenerator = new QRCodeGenerator(); QRCodeData qrCodeData = qrGenerator.CreateQrCode(strCode, QRCodeGenerator.ECCLevel.Q); QRCode qrcode = new QRCode(qrCodeData); //生成二维码位图 qrCodeImage = qrcode.GetGraphic(5, Foreground, Background, null, 0, 6, IsBorderVisable); //qrCodeImage.MakeTransparent(Background); //if (Background.A != 0) //{ // for (int x = 0; x < qrCodeImage.Width; x++) // { // for (int y = 0; y < qrCodeImage.Height; y++) // { // if (qrCodeImage.GetPixel(x, y).ToArgb() == 0) // { // qrCodeImage.SetPixel(x, y, Background); // } // } // } //} Monitor = new Timer(MonitorCallback, obj.data.oauthKey, 1000, 1000); Refresher = new Timer(RefresherCallback, new List <object> { Foreground, Background, IsBorderVisable }, 180000, Timeout.Infinite); } } else { goto re; } return(qrCodeImage); }
/// <summary> /// 获取登陆二维码 /// </summary> public static Bitmap GetQrcode() { Bitmap qrCodeImage = null; re: //获取二维码要包含的url string str = Http.GetBody("https://passport.bilibili.com/qrcode/getLoginUrl", null, "https://passport.bilibili.com/login"); if (!string.IsNullOrEmpty(str)) { #if NETSTANDARD2_0 || NETCORE3_0 GetQrcode_DataTemplete obj = JsonConvert.DeserializeObject <GetQrcode_DataTemplete>(str); #else GetQrcode_DataTemplete obj = (new JavaScriptSerializer()).Deserialize <GetQrcode_DataTemplete>(str); #endif if (obj.code == 0) { // 生成二维码的内容 string strCode = obj.data.url; #if !NETSTANDARD2_0 && !NETCORE3_0 QRCodeGenerator qrGenerator = new QRCodeGenerator(); QRCodeData qrCodeData = qrGenerator.CreateQrCode(strCode, QRCodeGenerator.ECCLevel.Q); QRCode qrcode = new QRCode(qrCodeData); //生成二维码位图 qrCodeImage = qrcode.GetGraphic(5, Color.Black, Color.White, null, 0, 6, false); #else QRCodeGenerator qrGenerator = new QRCodeGenerator(); QRCodeData qrCodeData = qrGenerator.CreateQrCode(strCode, QRCodeGenerator.ECCLevel.Q); QRCode qrcode = new QRCode(qrCodeData); //生成二维码位图 qrCodeImage = qrcode.GetGraphic(5, Color.Black, Color.White, null, 0, 6, false); #endif Monitor = new Timer(MonitorCallback, obj.data.oauthKey, 1000, 1000); Refresher = new Timer(RefresherCallback, null, 180000, Timeout.Infinite); } } else { goto re; } return(qrCodeImage); }