示例#1
0
        /// <summary>
        /// Parse QueryString that define the QR code properties
        /// </summary>
        /// <param name="request">HttpRequest containing HTTP GET data</param>
        /// <returns>A QR code descriptor object</returns>
        public static CodeDescriptor Init(HttpRequest request)
        {
            var cp = new CodeDescriptor();

            // Error correction level
            if (!Enum.TryParse(request.QueryString["e"], out cp.Ecl))
            {
                cp.Ecl = ErrorCorrectionLevel.M;
            }

            // Code content to encode
            cp.Content = request.QueryString["t"];

            // Size of the quiet zone
            if (!Enum.TryParse(request.QueryString["q"], out cp.QuietZones))
            {
                cp.QuietZones = QuietZoneModules.Two;
            }

            // Module size
            if (!int.TryParse(request.QueryString["s"], out cp.ModuleSize))
            {
                cp.ModuleSize = 12;
            }

            return(cp);
        }
示例#2
0
        public void ProcessRequest(HttpContext context)
        {
            // Retrieve the parameters from the QueryString
            var codeParams = CodeDescriptor.Init(context.Request);

            // Encode the content
            if (codeParams == null || !codeParams.TryEncode())
            {
                context.Response.StatusCode = (int)HttpStatusCode.BadRequest;
                return;
            }

            // Render the QR code as an image
            using (var ms = new MemoryStream())
            {
                codeParams.Render(ms);
                context.Response.ContentType = codeParams.ContentType;
                context.Response.OutputStream.Write(ms.GetBuffer(), 0, (int)ms.Length);
            }
        }