Пример #1
5
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                var content = WebUtility.GetRequestStr("s", "");
                if (!content.StartsWith("http"))
                    content = string.Format("http://{0}:{1}{2}", Request.Url.Host, Request.Url.Port, HttpUtility.UrlDecode(content));

                QrEncoder qrEncoder = new QrEncoder(ErrorCorrectionLevel.H);
                QrCode qrCode = new QrCode();
                if (qrEncoder.TryEncode(content, out qrCode))
                {
                    var fCodeSize = new FixedCodeSize(500, QuietZoneModules.Two);
                    fCodeSize.QuietZoneModules = QuietZoneModules.Four;
                    GraphicsRenderer renderer = new GraphicsRenderer(fCodeSize, Brushes.Black, Brushes.White);
                    MemoryStream ms = new MemoryStream();
                    renderer.WriteToStream(qrCode.Matrix, ImageFormat.Png, ms);

                    Response.Cache.SetNoStore();
                    Response.ClearContent();
                    Response.ContentType = "image/Png";
                    Response.BinaryWrite(ms.ToArray());
                }
            }
        }
Пример #2
2
        private void button1_Click(object sender, EventArgs e)
        {
            /// generar un codigo QR para los elementos de la caja 

            // crear un encoder, codificador
            QrEncoder Codificador = new QrEncoder( ErrorCorrectionLevel.H );

            // crear un codigo QR
            QrCode Codigo = new QrCode();

            // generar generar  un codigo apartir de datos, y pasar el codigo por referencia
            Codificador.TryEncode(textBox1.Text, out Codigo);

            // generar un graficador 
            GraphicsRenderer Renderisado = new GraphicsRenderer(new FixedCodeSize(200, QuietZoneModules.Zero), Brushes.Black, Brushes.White);

            // generar un flujo de datos 
            MemoryStream ms = new MemoryStream();

            // escribir datos en el renderizado
            Renderisado.WriteToStream(Codigo.Matrix, ImageFormat.Png, ms);

            // generar controles para ponerlos en el form
            var ImagenQR = new Bitmap(ms);
            var ImgenSalida = new Bitmap(ImagenQR, new Size(panel1.Width, panel1.Height));

            // asignar la imagen al panel 
            panel1.BackgroundImage = ImgenSalida;
            


                 
        }
Пример #3
0
        protected void GenerateQRCode()
        {
            if (_borderQRCode == null || _qrCodeRect == null)
                return;

            if (string.IsNullOrWhiteSpace(ItemURL))
            {
                _borderQRCode.Visibility = Visibility.Collapsed;
                return;
            }

            try
            {
                QrEncoder encoder = new QrEncoder(ErrorCorrectionLevel.M);
                QrCode qrCode;
                if (encoder.TryEncode(ItemURL, out qrCode))
                {
                    DrawingBrushRenderer dRenderer = new DrawingBrushRenderer(new FixedModuleSize(2, QuietZoneModules.Two), System.Windows.Media.Brushes.Black, System.Windows.Media.Brushes.White);
                    System.Windows.Media.DrawingBrush dBrush = dRenderer.DrawBrush(qrCode.Matrix);
                    _qrCodeRect.Fill = dBrush;
                    _borderQRCode.Visibility = System.Windows.Visibility.Visible;
                }
                else
                {
                    _borderQRCode.Visibility = System.Windows.Visibility.Collapsed;
                }
            }
            catch
            {
                _borderQRCode.Visibility = System.Windows.Visibility.Collapsed;
            }
        }
Пример #4
0
        /// <summary>
        /// 生成二维码
        /// </summary>
        /// <param name="content">内容</param>
        /// <param name="filePath">保存文件路径</param>
        /// <param name="errorMessage">错误异常消息</param>
        /// <returns></returns>
        public static bool Generate(string content, string filePath, out string errorMessage)
        {
            errorMessage = string.Empty;
            var qrEncoder = new QrEncoder(ErrorCorrectionLevel.H);
            try
            {
                QrCode qrCode;
                qrEncoder.TryEncode(content, out qrCode);
                var renderer = new Renderer(5, Brushes.Black, Brushes.White);

                if (!Directory.Exists(Path.GetDirectoryName(filePath)))
                    Directory.CreateDirectory(Path.GetDirectoryName(filePath));
                else
                {
                    FileInfo fileInfo = new FileInfo(filePath);
                    if (fileInfo.Exists)
                        fileInfo.Delete();
                }

                renderer.CreateImageFile(qrCode.Matrix, filePath, ImageFormat.Png);
                return true;
            }
            catch (Exception ex)
            {
                errorMessage = ex.Message;
                return false;
            }
        }
Пример #5
0
        protected void Page_Load(object sender, EventArgs e)
        {
            var api = Request["Api"];
            if (String.IsNullOrEmpty(api))
                return;

            var manager = new OAuthHelper(ConfigurationManager.AppSettings["wxappid"]);
            var url = manager.BuildOAuthUrl("http://wx.taogame.com/OAuthUserInfoDemo.aspx",
                api == "snsapi_base" ? OAuthScope.Base : OAuthScope.UserInfo,
                api);


            QrEncoder encoder = new QrEncoder(ErrorCorrectionLevel.M);
            QrCode qrCode;
            encoder.TryEncode(url, out qrCode);

        
            GraphicsRenderer gRenderer = new GraphicsRenderer(
                new FixedModuleSize(2, QuietZoneModules.Two),
                Brushes.Black, Brushes.White);

            MemoryStream ms = new MemoryStream();
            gRenderer.WriteToStream(qrCode.Matrix, ImageFormat.Jpeg, ms);

            Response.BinaryWrite(ms.ToArray());
        }
        /// <summary>
        /// Encode the content with desired parameters and save the generated Matrix
        /// </summary>
        /// <returns>True if the encoding succeeded, false if the content is empty or too large to fit in a QR code</returns>
        public bool TryEncode()
        {
            var encoder = new QrEncoder(Ecl);
            QrCode qr;
            if (!encoder.TryEncode(Content, out qr))
                return false;

            Matrix = qr.Matrix;
            return true;
        }
Пример #7
0
        private void button1_Click(object sender, EventArgs e)
        {
            SaveFileDialog saveFileDialog = new SaveFileDialog();
            saveFileDialog.Filter = @"PNG (*.png)|*.png|Bitmap (*.bmp)|*.bmp|Encapsuled PostScript (*.eps)|*.eps|SVG (*.svg)|*.svg";
            saveFileDialog.FileName = Path.GetFileName(GetFileNameProposal());
            saveFileDialog.DefaultExt = "png";

            if (saveFileDialog.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            QrEncoder encoder = new QrEncoder();
            QrCode qrCode;
            byte[] byteArray = new byte[] { 34, 54, 90, 200 };
            if (!encoder.TryEncode(byteArray, out qrCode))
                return;
            if (saveFileDialog.FileName.EndsWith("eps"))
            {
                BitMatrix matrix = qrCode.Matrix;

                // Initialize the EPS renderer
                var renderer = new EncapsulatedPostScriptRenderer(
                    new FixedModuleSize(6, QuietZoneModules.Two), // Modules size is 6/72th inch (72 points = 1 inch)
                    new FormColor(Color.Black), new FormColor(Color.White));

                using (var file = File.Open(saveFileDialog.FileName, FileMode.CreateNew))
                {
                    renderer.WriteToStream(matrix, file);
                }
            }
            else if (saveFileDialog.FileName.EndsWith("svg"))
            {
                BitMatrix matrix = qrCode.Matrix;

                // Initialize the EPS renderer
                var renderer = new SVGRenderer(
                    new FixedModuleSize(6, QuietZoneModules.Two), // Modules size is 6/72th inch (72 points = 1 inch)
                    new FormColor(Color.FromArgb(150, 200, 200, 210)), new FormColor(Color.FromArgb(200, 255, 155, 0)));

                using (var file = File.OpenWrite(saveFileDialog.FileName))
                {
                    renderer.WriteToStream(matrix, file, false);
                }
            }
            else
            {
                GraphicsRenderer gRender = new GraphicsRenderer(new FixedModuleSize(30, QuietZoneModules.Four));
                BitMatrix matrix = qrCode.Matrix;
                using (FileStream stream = new FileStream(saveFileDialog.FileName, FileMode.Create))
                {
                    gRender.WriteToStream(matrix, ImageFormat.Png, stream, new Point(600, 600));
                }
            }
        }
     public ActionResult QR(string id)
     {
         QrEncoder encoder = new QrEncoder(ErrorCorrectionLevel.L);
         QrCode qrCode;
         encoder.TryEncode("http://mobiledev.scrzjh.com:9999/l?id=" + id.ToString(), out qrCode);
         MemoryStream ms = new MemoryStream();
         var render = new GraphicsRenderer(new FixedModuleSize(8, QuietZoneModules.Two));
         render.WriteToStream(qrCode.Matrix, ImageFormat.Png, ms);
 
         return File(ms.GetBuffer(), "image/png");
     }
        /// <summary>
        /// Qr Code generation
        /// </summary>
        /// <param name="barcodeText"></param>
        /// <returns></returns>
        public ActionResult BarcodeImage(String barcodeText)
        {
            // generating a barcode here. Code is taken from QrCode.Net library
            QrEncoder qrEncoder = new QrEncoder(ErrorCorrectionLevel.H);
            QrCode qrCode = new QrCode();
            qrEncoder.TryEncode(barcodeText, out qrCode);
            GraphicsRenderer renderer = new GraphicsRenderer(new FixedModuleSize(4, QuietZoneModules.Four), Brushes.Black, Brushes.White);
            Stream memoryStream = new MemoryStream();
            renderer.WriteToStream(qrCode.Matrix, ImageFormat.Png, memoryStream);

            // very important to reset memory stream to a starting position, otherwise you would get 0 bytes returned
            memoryStream.Position = 0;
            var resultStream = new FileStreamResult(memoryStream, "image/png");
            resultStream.FileDownloadName = String.Format("{0}.png", barcodeText);
            return resultStream;
        }
Пример #10
0
 private bool GenCode(string content, out MemoryStream ms)
 {
     ms = new MemoryStream();
     ErrorCorrectionLevel ecl = ErrorCorrectionLevel.M;//误差水平
     QuietZoneModules qzm = QuietZoneModules.Two;
     int moduleSize = 12;
     QrEncoder encoder = new QrEncoder(ecl);
     QrCode qr;
     if (encoder.TryEncode(content, out qr))//对内容进行编码,并保存生成的矩阵
     {
         var render = new GraphicsRenderer(new FixedModuleSize(moduleSize, qzm));
         render.WriteToStream(qr.Matrix, ImageFormat.Jpeg, ms);
         return true;
     }
     return false;
 }
Пример #11
0
        public ActionResult BarcodeImage(String barcodeText)
        {
            QrEncoder qrEncoder = new QrEncoder(ErrorCorrectionLevel.H);
            QrCode qrCode = new QrCode();
            qrEncoder.TryEncode(barcodeText, out qrCode);
            GraphicsRenderer renderer = new GraphicsRenderer(new FixedModuleSize(4, QuietZoneModules.Four), Brushes.Black, Brushes.White);

            Stream memoryStream = new MemoryStream();
            renderer.WriteToStream(qrCode.Matrix, ImageFormat.Png, memoryStream);

            memoryStream.Position = 0;

            var resultStream = new FileStreamResult(memoryStream, "image/png");
            resultStream.FileDownloadName = String.Format("{0}.png", barcodeText);

            return resultStream;
        }
Пример #12
0
    protected void Page_Load(object sender, EventArgs e)
    {
        QrEncoder encoder = new QrEncoder(ErrorCorrectionLevel.M);
        QrCode qrCode;
        encoder.TryEncode("Test", out qrCode);

        GraphicsRenderer gRenderer = new GraphicsRenderer(
         new FixedModuleSize(2, QuietZoneModules.Two),
         Brushes.Black, Brushes.White);

        MemoryStream ms = new MemoryStream();
        gRenderer.WriteToStream(qrCode.Matrix, ImageFormat.Png, ms);

        FileStream file = new FileStream("D:\\qr.png", FileMode.OpenOrCreate);
        ms.WriteTo(file);
        file.Flush();
        file.Close();
    }
        public ActionResult BarcodeImage(string secretKey, string userName)
        {
            string barcodeText = string.Format("otpauth://totp/Dentco%3A%20{0}?secret={1}", userName, secretKey);

            QrEncoder qrEncoder = new QrEncoder(ErrorCorrectionLevel.H);
            QrCode qrCode = new QrCode();
            qrEncoder.TryEncode(barcodeText, out qrCode);
            GraphicsRenderer renderer = new GraphicsRenderer(new FixedCodeSize(200, QuietZoneModules.Zero), Brushes.Black, Brushes.White);

            Stream memoryStream = new MemoryStream();
            renderer.WriteToStream(qrCode.Matrix, ImageFormat.Png, memoryStream);

            memoryStream.Position = 0;

            var resultStream = new FileStreamResult(memoryStream, "image/png");
            resultStream.FileDownloadName = string.Format("{0}.png", barcodeText);

            return resultStream;
        }
Пример #14
0
 public static bool GetQRCode(string CodeText,System.IO.MemoryStream ms)
 {
     ErrorCorrectionLevel Ecl = ErrorCorrectionLevel.M; //误差校正水平
     string Content = strContent;//待编码内容
     QuietZoneModules QuietZones = QuietZoneModules.Two;  //空白区域
     int ModuleSize = 12;//大小
     var encoder = new QrEncoder(Ecl);
     QrCode qr;
     if (encoder.TryEncode(Content, out qr))//对内容进行编码,并保存生成的矩阵
     {
         var render = new GraphicsRenderer(new FixedModuleSize(ModuleSize, QuietZones));
         render.WriteToStream(qr.Matrix, ImageFormat.Png, ms);
     }
     else
     {
         return false;
     }
     return true;
 }
Пример #15
0
        public static BitmapImage getQrBitmap(string text, ErrorCorrectionLevel errorCorrection = ErrorCorrectionLevel.M)
        {
            QrCode qrCode;
            QrEncoder qrEncoder = new QrEncoder(errorCorrection);
            qrEncoder.TryEncode(text, out qrCode);

            GraphicsRenderer gRenderer = new GraphicsRenderer(
                new FixedModuleSize(2, QuietZoneModules.Two),
                Brushes.Black, Brushes.White);
            BitmapImage bi = new BitmapImage();
            using (MemoryStream memoryStream = new MemoryStream())
            {
                gRenderer.WriteToStream(qrCode.Matrix, ImageFormat.Png, memoryStream);
                bi.BeginInit();
                bi.CacheOption = BitmapCacheOption.OnLoad;
                bi.StreamSource = memoryStream;
                bi.EndInit();
            }
            return bi;
        }
Пример #16
0
        /// <summary>
        /// 使用Gma.QrCodeNet.Encoding 组件
        /// </summary>
        /// <param name="content"></param>
        /// <returns></returns>
        public static byte[] GetQrCode(string content)
        {
            QrEncoder qr = new QrEncoder();

            Gma.QrCodeNet.Encoding.QrCode code; //保存生成的二维码

            QuietZoneModules QuietZones = QuietZoneModules.Zero;  //空白区域 
            int ModuleSize = 10;//大小

            MemoryStream ms = new MemoryStream();

            if (qr.TryEncode(content, out code))//对内容进行编码,并保存生成的矩阵
            {
                var render = new GraphicsRenderer(new FixedModuleSize(ModuleSize, QuietZones));
                render.WriteToStream(code.Matrix, ImageFormat.Png, ms);//将二维码写入流

                return ms.ToArray(); //返回byte[]
            }

            return null;
        }
Пример #17
0
        internal static ActionResult QRCodeAction(string id)
        {
            try {
                var encoder = new QrEncoder ();
                var ms = new MemoryStream (4 * 1024);
                var render = new GraphicsRenderer (new FixedCodeSize (300, QuietZoneModules.Zero));
                QrCode code;

                if (!encoder.TryEncode (id, out code))
                    return null;

                render.WriteToStream (code.Matrix, ImageFormat.Png, ms, new Point (300, 300));

                ms.Seek (0, SeekOrigin.Begin);
                var result = new FileStreamResult (ms, "image/png");
                result.FileDownloadName = string.Format ("{0}.png", id);

                return result;
            } catch (Exception ex) {
                System.Diagnostics.Debug.WriteLine (ex);
                return null;
            }
        }
Пример #18
0
        /// <summary>
        /// Méthode retournant un objet d'image Bitmap d'un code QR
        /// </summary>
        /// <param name="text">Le texte à encoder</param>
        /// <param name="errorCorrection">Le niveau de correction d'erreur choisi. Détermine le pourcentage de la structure du codeQR est utilisé pour corriger les erreurs.</param>
        /// <returns>Objet BitmapImage du codeQR</returns>
        public static BitmapImage getQrBitmap(string text, ErrorCorrectionLevel errorCorrection = ErrorCorrectionLevel.M)
        {
            QrCode qrCode;
            QrEncoder qrEncoder = new QrEncoder(errorCorrection);
            //Peut techniquement échouer et le cas n'est pas géré.
            qrEncoder.TryEncode(text, out qrCode);

            //Détermine l'épaisseur des traits, la couleur de fond et la couleur du code QR.
            GraphicsRenderer gRenderer = new GraphicsRenderer(
                new FixedModuleSize(2, QuietZoneModules.Two),
                Brushes.Black, Brushes.White);
            BitmapImage bi = new BitmapImage();
            using (MemoryStream memoryStream = new MemoryStream())
            {
                //Utilise les bytes du codeQR encodé qui se trouve dans l'objet qrCode dans un MemoryStream pour faire une BitmapImage.
                gRenderer.WriteToStream(qrCode.Matrix, ImageFormat.Png, memoryStream);
                bi.BeginInit();
                bi.CacheOption = BitmapCacheOption.OnLoad;
                bi.StreamSource = memoryStream;
                bi.EndInit();
            }
            return bi;
        }
Пример #19
0
        static public Texture2D GenerateQRCode(GraphicsDevice device, string text)
        {
            QrEncoder encoder = new QrEncoder(ErrorCorrectionLevel.H);
            QrCode qrCode;
            encoder.TryEncode(text, out qrCode);

            GraphicsRenderer gRenderer = new GraphicsRenderer(
                new FixedModuleSize(2, QuietZoneModules.Two));

            System.IO.MemoryStream ms = new System.IO.MemoryStream();
            gRenderer.WriteToStream(qrCode.Matrix, Drawing.Imaging.ImageFormat.Bmp, ms);

            Drawing.Bitmap bmp = new Drawing.Bitmap(ms);

            Texture2D texture = new Texture2D(device, bmp.Width, bmp.Height);

            // lockbits improve performance
            Imaging.BitmapData data;
            data = bmp.LockBits(
                new Drawing.Rectangle(0, 0, bmp.Width, bmp.Height),
                Imaging.ImageLockMode.ReadOnly,
                bmp.PixelFormat);

            int bufferSize = data.Height * data.Stride;
            byte[] bytes = new byte[bufferSize];
            Marshal.Copy(data.Scan0, bytes, 0, bytes.Length);

            texture.SetData<byte>(bytes);

            return texture;
        }
Пример #20
0
        private void btnGenerate_Click(object sender, RoutedEventArgs e)
        {
            var enc = new QrEncoder(ErrorCorrectionLevel.M);
            var mapsCtrl = new MapsController();

            var folder = Path.Combine(
                Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
                "StudMap");

            if (!Directory.Exists(folder))
                Directory.CreateDirectory(folder);

            foreach (var node in Nodes)
            {
                var qrCode = new QRCode
                    {
                        General = new General
                            {
                                DisplayName = node.DisplayName,
                                RoomName = node.RoomName
                            },
                        StudMap = new Core.Information.StudMap
                            {
                                NodeId = node.NodeId
                            }
                    };
                var qrCodeStr = JsonConvert.SerializeObject(qrCode);
                try
                {
                    QrCode bmp;
                    enc.TryEncode(qrCodeStr, out bmp);
                    var path = Path.Combine(folder, node.DisplayName + "_" + node.RoomName + ".png");

                    var gRenderer = new GraphicsRenderer(
                        new FixedModuleSize(2, QuietZoneModules.Two),
                        Brushes.Black, Brushes.White);

                    var ms = new MemoryStream();
                    gRenderer.WriteToStream(bmp.Matrix, ImageFormat.Png, ms);
                    var output = new Bitmap(ms);
                    output.Save(path, ImageFormat.Png);
                }
                catch(Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                finally
                {
                    mapsCtrl.SaveQRCodeForNode(node.NodeId, qrCodeStr);
                }
            }

            Process.Start(folder);
        }
Пример #21
0
        public FileResult getQRCode(int id = 0)
        {
            Task task = db.Tasks.Find(id);
            if (task == null)
            {
                return null;
            }
            int t = (int)db.Tasks.Sum(s => s.bonusPoints);
            QrEncoder qrEncoder = new QrEncoder(ErrorCorrectionLevel.H);
            QrCode qrCode = new QrCode();
            qrEncoder.TryEncode("http://localhost:1558/Tasks/SubmitQR/?token=" + task.token, out qrCode);

            GraphicsRenderer renderer = new GraphicsRenderer(new FixedModuleSize(2, QuietZoneModules.Two), Brushes.Black, Brushes.White);

            MemoryStream ms = new MemoryStream();

            renderer.WriteToStream(qrCode.Matrix, ImageFormat.Png, ms);

            var imageTemp = new Bitmap(ms);

            return File(ms.ToArray(), "image/png");
        }
 void DisplayQRCode(string imageUrl)
 {
     imageUrl = Common.UrlHelper.GetCorrectedStreamURL(imageUrl);
     if (string.IsNullOrWhiteSpace(imageUrl))
     {
         brdrQRCode.Visibility = System.Windows.Visibility.Collapsed;
         return;
     }
     try
     {
         QrEncoder encoder = new QrEncoder(ErrorCorrectionLevel.M);
         QrCode qrCode;
         if (encoder.TryEncode(imageUrl, out qrCode))
         {
             DrawingBrushRenderer dRenderer = new DrawingBrushRenderer(new FixedModuleSize(2, QuietZoneModules.Two), Brushes.Black, Brushes.White);
             DrawingBrush dBrush = dRenderer.DrawBrush(qrCode.Matrix);
             rectQRCode.Fill = dBrush;
             brdrQRCode.Visibility = System.Windows.Visibility.Visible;
         }
         else
         {
             brdrQRCode.Visibility = System.Windows.Visibility.Collapsed;
         }
     }
     catch
     {
         brdrQRCode.Visibility = System.Windows.Visibility.Collapsed;
     }
 }
Пример #23
0
        /// <summary>
        /// 根据文字内容等信息构建相应QRCode格式二维码图片
        /// </summary>
        /// <param name="content">二维码内容信息</param>
        /// <param name="level">纠错级别</param>
        /// <param name="width">图片宽度,如小于0则使用默认尺寸</param>
        /// <param name="height">图片高度,如小于0则使用默认尺寸</param>
        /// <param name="inline">内嵌图片,如为Null则不做内嵌</param>
        /// <returns>二维码图片</returns>
        public static Image BuildQRCode(String content, ErrorCorrectionLevel level, int width, int height, Image inline)
        {
            QrEncoder encoder = new QrEncoder(level);
            QrCode code = null;
            if (!encoder.TryEncode(content, out code))
                return null;

            GraphicsRenderer render = new GraphicsRenderer(new FixedModuleSize(ModuleSizeInPixels, QuietZoneModules.Two), Brushes.Black, Brushes.White);
            DrawingSize cSize = render.SizeCalculator.GetSize(code.Matrix.Width);
            Size oSize = new Size(cSize.CodeWidth, cSize.CodeWidth) + new Size(2 * PaddingSizeInPixels, 2 * PaddingSizeInPixels);

            Image img = new Bitmap(oSize.Width, oSize.Height);

            using (Graphics g = Graphics.FromImage(img))
            {
                g.CompositingQuality = CompositingQuality.HighQuality;
                g.InterpolationMode = InterpolationMode.HighQualityBicubic;

                render.Draw(g, code.Matrix);
                if (inline != null)
                {
                    int iw = (int)(oSize.Width * InlineSizeInProportion);
                    int ih = (int)(oSize.Height * InlineSizeInProportion);
                    int il = (oSize.Width - iw) / 2;
                    int it = (oSize.Height - ih) / 2;
                    g.DrawImage(inline, it, il, iw, ih);
                    Pen pen = new Pen(Color.White, 1);
                    using (GraphicsPath path = CreateRoundedRectanglePath(new Rectangle(it - 1, il - 1, iw + 1, ih + 1), 4))
                    {
                        g.DrawPath(pen, path);
                    }

                }
            }

            if (width > 0 && height > 0)
            {
                int w = width > 0 ? width : code.Matrix.Width;
                int h = height > 0 ? height : code.Matrix.Height;
                Image imgCode = new Bitmap(width, height);
                using (Graphics g = Graphics.FromImage(imgCode))
                {
                    g.CompositingQuality = CompositingQuality.HighQuality;
                    g.InterpolationMode = InterpolationMode.HighQualityBicubic;
                    g.DrawImage(img, 0, 0, width, height);
                }

                img.Dispose();
                img = imgCode;

            }

            return img;
        }
Пример #24
0
        Bitmap ComputeQRCode(int slice)
        {
            var qrEncoder = new QrEncoder(FErrorCorrectionLevel[slice]);
            var qrCode = new QrCode();
            if (qrEncoder.TryEncode(FText[slice], out qrCode))
            {
                var fc = FForeColor[slice];
                var bc = FBackColor[slice];
                fc = new RGBAColor(fc.B, fc.G, fc.R, fc.A);
                bc = new RGBAColor(bc.B, bc.G, bc.R, bc.A);
                using (var fore = new SolidBrush(fc.Color))
                using (var back = new SolidBrush(bc.Color))
                {
                    var renderer = new GraphicsRenderer(new FixedModuleSize(FPixelSize[slice], FQuietZoneModules[slice]), fore, back);
                    DrawingSize dSize = renderer.SizeCalculator.GetSize(qrCode.Matrix.Width);
                    var bmp = new Bitmap(dSize.CodeWidth, dSize.CodeWidth);
                    using (var g = Graphics.FromImage(bmp))
                        renderer.Draw(g, qrCode.Matrix);

                    return bmp;
                }
            }
            else
                return null;
        }
Пример #25
0
        /// <summary>
        /// Renders a Quick Reponse code, that can be used with Google Authenticator or compatiple software.
        /// </summary>
        /// <param name="ident">ident of device as shown to user</param>
        /// <param name="key">private key</param>
        /// <param name="type">type of QR code, HOTP or TOTP</param>
        /// <param name="size">pixels height/width of png image</param>
        /// <returns>png image as byte array</returns>
        public static byte[] RenderQrCode(string ident, byte[] key, QrCodeType type, int size=200)
        {
            string url = "otpauth://" + type.ToString().ToLower() + "/" + ident + "?secret=" + Base32.Convert(key);

            QrEncoder encoder = new QrEncoder(ErrorCorrectionLevel.M);
            QrCode qrCode;
            encoder.TryEncode(url, out qrCode);

            ISizeCalculation isize = new FixedCodeSize(size, QuietZoneModules.Zero);
            GraphicsRenderer gRenderer = new GraphicsRenderer(isize);

            using (MemoryStream ms = new MemoryStream())
            {
                gRenderer.WriteToStream(qrCode.Matrix, ImageFormat.Png, ms);
                return ms.GetBuffer();
            }
        }
Пример #26
0
        public ActionResult Generate(String longurl)
        {
            var jsonResp = new UrlShortenResponse{
            Success = true
            };

            /*
             *   +--------------------------------------------------------------------------------+
             *   | Step 1: Check if the URL is valid. We will issue a web request and see the     |
             *   |         status code.                                                           |
             *   | Step 2: Check if this URL is already in the system. If exists, return          |
             *   |         We will check for the current user, since we will generate a unique    |
             *   |         URL for each user for a given original URL                             |
             *   | Step 3: Generate short URL. (May be check again if we generated a duplicate?)  |
             *   | Step 4: Generate a QR code for the URL                                         |
             *   | Step 5: Save generated short url and also save the QR image.                   |
             *   | Step 6: Send Json response back to the user.                                   |
             *   +--------------------------------------------------------------------------------+
            */

            #region Step 1 - Check for a valid URL

            bool bValidUrl = true;
            try
            {
                HttpWebRequest request = WebRequest.Create(longurl) as HttpWebRequest;
                request.Method = "GET";
                request.CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore);
                var response = request.GetResponse();
                bValidUrl = response.Headers.Count > 0;
            }
            catch
            {
                bValidUrl = false;
            }

            if (!bValidUrl)
            {
                return Json(new UrlShortenResponse
                {
                    Success = false,
                    Message = "Please check if the URL is correct and try again."
                }, "text/html");
            }

            String protoPrefix = "http://";
            String webUrl = longurl;
            if (longurl.Contains("://"))
            {
                int iIndex = longurl.IndexOf("://");
                protoPrefix = longurl.Substring(0, iIndex + 3);
                webUrl = longurl.Substring(iIndex + 3);
            }

            #endregion

            #region Step 2-5 - Generate URL and save

            UrlMap url = _UrlMapDataSource.FindSingleUrlByUserName(longurl, User.Identity.Name);
            if (url == null)
            {
                url = new UrlMap();
                url.OriginalUrl = longurl;
                url.DateCreated = DateTime.UtcNow;
                url.IsActive = true;

                //Step 3:
                //Now generate hash for the longUrl;
                uint hash = FNVHash.fnv_32a_str(webUrl + User.Identity.Name);

                //Convert hash to base36
                url.ShortUrlCode = Base36Converter.Encode(hash);

                url.ShortUrl = String.Format("{0}{1}", _URLShortenerHost, url.ShortUrlCode);

                //Step 4:
                QrEncoder qrEncoder = new QrEncoder(ErrorCorrectionLevel.H);
                QrCode qrCode = new QrCode();
                qrEncoder.TryEncode(url.ShortUrl, out qrCode);

                Renderer renderer = new Renderer(5, Brushes.Black, Brushes.White);

                String fileName = String.Format("{0}{1}.qr", AppDomain.CurrentDomain.BaseDirectory, url.ShortUrlCode);
                renderer.CreateImageFile(qrCode.Matrix, fileName, ImageFormat.Png);
                jsonResp.QRCodeUrl = String.Format("{0}Home/QRImage/{1}.qr", _URLShortenerHost, url.ShortUrlCode);

                //Save Url Map
                _UrlMapDataSource.AddUrlMap(url, User.Identity.Name);

                //Save method appends the .qr extension
                _UrlMapDataSource.SaveQRCode(fileName, url.ShortUrlCode);
            }
            #endregion

            // Step 6
            jsonResp.Url = url.ShortUrl;
            jsonResp.QRCodeUrl = String.Format("{0}Home/QRImage/{1}.qr", _URLShortenerHost, url.ShortUrlCode);

            return Json(jsonResp, "text/html");
        }
Пример #27
0
    public static void WriteQrsDead(Guid DeadEventID)
    {
        Dead deadCase = new Dead();
        deadCase.LoadByPrimaryKey(DeadEventID);
        MHO.BLL.AREA area = new AREA();
        area.LoadByPrimaryKey(deadCase.DeadArea);
        MHO.BLL.POLICE_STATION ps = new POLICE_STATION();
        ps.LoadByPrimaryKey(deadCase.DeadSection);
        MHO.BLL.health_office ho = new health_office();
        ho.LoadByPrimaryKey(deadCase.OrgID);

        NATIONALITY MotherNath = new NATIONALITY();
        MotherNath.LoadByPrimaryKey(deadCase.DeadMotherNationality);
        string gender = (deadCase.DeadGender == 1) ? "ذكر " : "أنثى";
        string deadMartialStatus = "اعزب", deadReligion = "مسلم", motherReligion = "مسلم", InformRelation = "الأب";

        switch (deadCase.DeadMartialStatus)
        {
            case 1:
                deadMartialStatus = "اعزب";
                break;
            case 2:
                deadMartialStatus = "متزوج";
                break;
            case 3:
                deadMartialStatus = "مطلق";
                break;
            case 4:
                deadMartialStatus = "أرمل";
                break;
        }
        switch (deadCase.DeadMotherReligion)
        {
            case 1:
                motherReligion = "مسلم";
                break;
            case 2:
                motherReligion = "مسيحى";
                break;
            case 3:
                motherReligion = "يهودى";
                break;
        }

        switch (deadCase.DeadReligion)
        {
            case 1:
                deadReligion = "مسلم";
                break;
            case 2:
                deadReligion = "مسيحى";
                break;
            case 3:
                deadReligion = "يهودى";
                break;
        }

        switch (deadCase.InformerRelation)
        {
            case 1:
                InformRelation = "الاب";
                break;
            case 2:
                InformRelation = "الام";
                break;
            case 3:
                InformRelation = "الاخ";
                break;
            case 4:
                InformRelation = "الاخت";
                break;
            case 5:
                InformRelation = "العم";
                break;
            case 6:
                InformRelation = "الخال";
                break;
            case 7:
                InformRelation = "الجد";
                break;
            case 8:
                InformRelation = "اخري";
                break;
            case 9:
                InformRelation = "الابن";
                break;
            case 10:
                InformRelation = "الابنة";
                break;
        }
        if (deadCase.RowCount > 0)
        {
            QrEncoder encoder = new QrEncoder(ErrorCorrectionLevel.M);
            QrCode qrCode;
            StringBuilder builder = new StringBuilder();
            builder.AppendLine(deadCase.DeadNID);
            builder.AppendLine("," + deadCase.DeadFirstName + " " + deadCase.DeadFatherName + " " + deadCase.DeadGrandName + " " + deadCase.DeadFamilyName);
            builder.AppendLine("," + deadCase.DeadBirthDate.ToShortDateString());
            builder.AppendLine("," + deadReligion);
            builder.AppendLine("," + deadMartialStatus);
            builder.AppendLine("," + gender);
            builder.AppendLine("," + deadCase.AddressNo + "," + deadCase.AddressStreet + "," + deadCase.AddressFeatured);
            builder.AppendLine("," + ps.DESCR);
            builder.AppendLine("," + area.DESCR);
            builder.AppendLine("," + deadCase.DeadDieDate.ToShortDateString() + " - " + deadCase.DeadDieHour + ":" + deadCase.DeadDieMin);
            builder.AppendLine("," + deadCase.DiePlace + "," + deadCase.DiePlaceDescription);
            builder.AppendLine("," + deadCase.DeadMotherFirstName + " " + deadCase.DeadMotherSecondName + " " + deadCase.DeadMotherFamilyName + " " + deadCase.DaadMotherSureName);
            builder.AppendLine("," + MotherNath.DESCR);
            builder.AppendLine("," + motherReligion);
            builder.AppendLine("," + deadCase.DeadMotherJob);
            builder.AppendLine("," + deadCase.DeadMotherNID);
            builder.AppendLine("," + deadCase.InformerFirstName + " " + deadCase.InformerSecondName);
            builder.AppendLine("," + InformRelation);
            builder.AppendLine("," + deadCase.InformerNID);
            builder.AppendLine("," + deadCase.InformerPhone);
            encoder.TryEncode(builder.ToString(), out qrCode);

            GraphicsRenderer gRenderer = new GraphicsRenderer(
            new FixedModuleSize(2, QuietZoneModules.Zero),
            Brushes.Black, Brushes.White);

            MemoryStream ms = new MemoryStream();
            gRenderer.WriteToStream(qrCode.Matrix, ImageFormat.Bmp, ms);

            try
            {

                SqlCommand cmd = new SqlCommand();
                SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["dbConnection"].ToString());
                cmd.CommandText = "insert into QRSDead (ID,QrCode) values  (@ID,@Picture)";
                cmd.Parameters.Add("@ID", System.Data.SqlDbType.UniqueIdentifier);
                cmd.Parameters.Add("@Picture", System.Data.SqlDbType.VarBinary);
                cmd.Connection = conn;
                cmd.Parameters["@ID"].Value = DeadEventID;
                cmd.Parameters["@Picture"].Value = ms.ToArray();

                conn.Open();
                cmd.ExecuteNonQuery();
                conn.Close();
            }
            catch (Exception ex)
            {

            }
        }
    }
Пример #28
0
    public static void WriteQrsBorn(Guid BornEventID)
    {
        Born bornCase = new Born();
        bornCase.LoadByPrimaryKey(BornEventID);
        MHO.BLL.AREA area = new AREA();
        area.LoadByPrimaryKey(bornCase.BornArea);
        MHO.BLL.POLICE_STATION ps = new POLICE_STATION();
        ps.LoadByPrimaryKey(bornCase.BornSection);
        MHO.BLL.health_office ho = new health_office();
        ho.LoadByPrimaryKey(bornCase.OrgID);
        NATIONALITY FatherNath = new NATIONALITY();
        FatherNath.LoadByPrimaryKey(bornCase.FatherNationality);
        NATIONALITY MotherNath = new NATIONALITY();
        MotherNath.LoadByPrimaryKey(bornCase.MotherNationality);
        string gender = (bornCase.BornGender == 1) ? "ذكر " : "أنثى";
        string fatherReligion = "مسلم", motherReligion = "مسلم", InformRelation = "الأب";
        switch (bornCase.FatherReligion)
        {
            case 1:
                fatherReligion = "مسلم";
                break;
            case 2:
                fatherReligion = "مسيحى";
                break;
            case 3:
                fatherReligion = "يهودى";
                break;

        }

        switch (bornCase.MotherReligion)
        {
            case 1:
                motherReligion = "مسلم";
                break;
            case 2:
                motherReligion = "مسيحى";
                break;
            case 3:
                motherReligion = "يهودى";
                break;
        }

        switch (bornCase.InformerRelation)
        {
            case 1:
                InformRelation = "الاب";
                break;
            case 2:
                InformRelation = "الام";
                break;
            case 3:
                InformRelation = "الاخ";
                break;
            case 4:
                InformRelation = "الاخت";
                break;
            case 5:
                InformRelation = "العم";
                break;
            case 6:
                InformRelation = "الخال";
                break;
            case 7:
                InformRelation = "الجد";
                break;
            case 8:
                InformRelation = "اخري";
                break;
            case 9:
                InformRelation = "الابن";
                break;
            case 10:
                InformRelation = "الابنة";
                break;
        }
        if (bornCase.RowCount > 0)
        {
            QrEncoder encoder = new QrEncoder(ErrorCorrectionLevel.M);
            QrCode qrCode;
            StringBuilder builder = new StringBuilder();

            builder.AppendLine(bornCase.BornName + " " + bornCase.FirstFatherName + " " + bornCase.SecondFatherName + " " + bornCase.FatherSureName);
            builder.AppendLine("," + ps.DESCR);
            builder.AppendLine("," + area.DESCR);
            builder.AppendLine("," + gender);
            builder.AppendLine("," + bornCase.BirthDate.ToShortDateString() + " " + bornCase.BirthDate.Minute.ToString() + ":" + bornCase.BirthDate.Hour.ToString());
            builder.AppendLine("," + bornCase.FirstFatherName + " " + bornCase.SecondFatherName + " " + bornCase.FamilyFatherName + " " + bornCase.FatherSureName);
            builder.AppendLine("," + FatherNath.DESCR);
            builder.AppendLine("," + fatherReligion);
            builder.AppendLine(",");
            builder.AppendLine("," + bornCase.FatherJob);
            builder.AppendLine("," + bornCase.FatherNID);
            builder.AppendLine("," + bornCase.FirstMotherName + " " + bornCase.SecondMotherName + " " + bornCase.FamilyMotherName + " " + bornCase.MotherSureName);
            builder.AppendLine("," + MotherNath.DESCR);
            builder.AppendLine("," + motherReligion);
            builder.AppendLine(",");
            builder.AppendLine("," + bornCase.MotherJob);
            builder.AppendLine("," + bornCase.MotherNID);
            builder.AppendLine("," + bornCase.InformerFirstName + " " + bornCase.InformerSecondName);
            builder.AppendLine("," + InformRelation);
            builder.AppendLine("," + bornCase.InformerNID);
            builder.AppendLine("," + bornCase.InformerPhone);
            encoder.TryEncode(builder.ToString(), out qrCode);

            GraphicsRenderer gRenderer = new GraphicsRenderer(
             new FixedModuleSize(2, QuietZoneModules.Zero),
             Brushes.Black, Brushes.White);

            MemoryStream ms = new MemoryStream();
            gRenderer.WriteToStream(qrCode.Matrix, ImageFormat.Bmp, ms);

            try
            {
                SqlCommand cmd = new SqlCommand();
                SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["dbConnection"].ToString());
                cmd.CommandText = "insert into QRSBorn (ID,QrCode) values  (@ID,@Picture)";
                cmd.Parameters.Add("@ID", System.Data.SqlDbType.UniqueIdentifier);
                cmd.Parameters.Add("@Picture", System.Data.SqlDbType.VarBinary);
                cmd.Connection = conn;
                cmd.Parameters["@ID"].Value = BornEventID;
                cmd.Parameters["@Picture"].Value = ms.ToArray();

                conn.Open();
                cmd.ExecuteNonQuery();
                conn.Close();
            }
            catch (Exception ex)
            {

            }

        }
    }
        public ActionResult GenerateQRCode(int id)
        {
            Task task = _taskRepo.Get(id);
            if(task == null)
                return new HttpNotFoundResult();

            QrCode qrCode;
            QrEncoder encoder = new QrEncoder();
            encoder.TryEncode(task.Token, out qrCode);

            GraphicsRenderer gRenderer = new GraphicsRenderer(
                new FixedModuleSize(2, QuietZoneModules.Two),
                Brushes.Black, Brushes.White);

            MemoryStream ms = new MemoryStream();
            gRenderer.WriteToStream(qrCode.Matrix, ImageFormat.Png, ms);

            return File(ms.ToArray(), "image/png");
        }
        /// <summary>
        /// 获取二维码
        /// </summary>
        /// <param name="content">待编码的字符</param>
        /// <param name="ms">输出流</param>
        ///<returns>True if the encoding succeeded, false if the content is empty or too large to fit in a QR code</returns>
        private static bool GetQrCode(string content, MemoryStream ms)
        {
            const ErrorCorrectionLevel ecl = ErrorCorrectionLevel.M; //误差校正水平
            const QuietZoneModules quietZones = QuietZoneModules.Two; //空白区域
            const int moduleSize = 12; //大小

            QrCode qr;

            var encoder = new QrEncoder(ecl);

            if (encoder.TryEncode(content, out qr))//对内容进行编码,并保存生成的矩阵
            {
                var render = new GraphicsRenderer(new FixedModuleSize(moduleSize, quietZones));

                render.WriteToStream(qr.Matrix, ImageFormat.Png, ms);

                return true;
            }

            return false;
        }