示例#1
0
        /// <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);
        }
示例#2
0
        /// <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);
        }