why qr not read quickly until i make zoom to qr to read?

I make code to read qr code but I face issue it read qr code with difficult way

I must make qr big zoom for qr and more close from qr to read it success

so how to handle that

what features I must add or reduce from qr to handle it quickly .

I Need any way can mae qr code read quickly

what I can enhance it to make performance very quickly

 public static string RenderQrCodeNewTruckerLogo(string P_ENC_Text, Color color, string GovName)
    {
        string ImageName = "NewTruckerLogo.png";
        
        string level = "L";//comboBoxECC.SelectedItem.ToString();
        QRCodeGenerator.ECCLevel eccLevel = (QRCodeGenerator.ECCLevel)(level == "L" ? 0 : level == "M" ? 1 : level == "Q" ? 2 : 3);
        using (QRCodeGenerator qrGenerator = new QRCodeGenerator())
        {
            using (QRCodeData qrCodeData = qrGenerator.CreateQrCode(P_ENC_Text, eccLevel))
            {
                using (QRCode qrCode = new QRCode(qrCodeData))
                {
                    MemoryStream ms = new MemoryStream();
                    //Bitmap bitmap = qrCode.GetGraphic(20, color, Color.White,
                    //    null, 15);
                    Bitmap bitmap = qrCode.GetGraphic(30, color, Color.White,
                        null, 15);
                    var LogoFilePath = Path.Combine(HttpContext.Current.Server.MapPath("~/assets/images/"), ImageName);
                    //var logoImg = Image.FromFile(LogoFilePath);
                    Bitmap logo = new Bitmap(LogoFilePath);
                    logo = Common.ResizeBitmap(logo, 300, 300);
                    Graphics g = Graphics.FromImage(bitmap);
                    g.DrawImage(logo, new Point((bitmap.Width - logo.Width) / 2, (bitmap.Height - logo.Height) / 2));
                    bitmap.Save(ms, ImageFormat.Png);
                    var base64Data = Convert.ToBase64String(ms.ToArray());
                
                    string Src = "data:image/png;base64," + base64Data;
                    return Src;

                }
            }
        }
    }
  public QRCodeData CreateQrCode(string plainText, ECCLevel eccLevel, bool forceUtf8 = false, bool utf8BOM = false, EciMode eciMode = EciMode.Default, int requestedVersion = -1)
        {
            return GenerateQrCode(plainText, eccLevel, forceUtf8, utf8BOM, eciMode, requestedVersion);
        }
 public static QRCodeData GenerateQrCode(string plainText, ECCLevel eccLevel, bool forceUtf8 = false, bool utf8BOM = false, EciMode eciMode = EciMode.Default, int requestedVersion = -1)
        {
            EncodingMode encoding = GetEncodingFromPlaintext(plainText, forceUtf8);
            var codedText = PlainTextToBinary(plainText, encoding, eciMode, utf8BOM, forceUtf8);
            var dataInputLength = GetDataLength(encoding, plainText, codedText, forceUtf8);
            int version = requestedVersion;
            if (version == -1)
            {
                version = GetVersion(dataInputLength, encoding, eccLevel);
            }

            string modeIndicator = String.Empty;
            if (eciMode != EciMode.Default)
            {
                modeIndicator = DecToBin((int)EncodingMode.ECI, 4);
                modeIndicator += DecToBin((int)eciMode, 8);
            }
            modeIndicator += DecToBin((int)encoding, 4);
            var countIndicator = DecToBin(dataInputLength, GetCountIndicatorLength(version, encoding));
            var bitString = modeIndicator + countIndicator;

            bitString += codedText;

            return GenerateQrCode(bitString, eccLevel, version);
        }
    public static Bitmap ResizeBitmap(Bitmap bmp, int width, int height)
    {
        Bitmap result = new Bitmap(width, height);
        using (Graphics g = Graphics.FromImage(result))
        {
            g.DrawImage(bmp, 0, 0, width, height);
        }

        return result;
    }
        public Bitmap GetGraphic(int pixelsPerModule, Color darkColor, Color lightColor, Bitmap icon=null, int iconSizePercent=15, int iconBorderWidth = 6, bool drawQuietZones = true)
        {
            var size = (this.QrCodeData.ModuleMatrix.Count - (drawQuietZones ? 0 : 8)) * pixelsPerModule;
            var offset = drawQuietZones ? 0 : 4 * pixelsPerModule;

            var bmp = new Bitmap(size, size, System.Drawing.Imaging.PixelFormat.Format32bppArgb);

            using (var gfx = Graphics.FromImage(bmp))
            using (var lightBrush = new SolidBrush(lightColor))
            using (var darkBrush = new SolidBrush(darkColor))
            {
                gfx.InterpolationMode = InterpolationMode.HighQualityBicubic;
                gfx.CompositingQuality = CompositingQuality.HighQuality;
                gfx.Clear(lightColor);

                var drawIconFlag = icon != null && iconSizePercent > 0 && iconSizePercent <= 100;

                GraphicsPath iconPath = null;
                float iconDestWidth = 0, iconDestHeight = 0, iconX = 0, iconY = 0;

                if (drawIconFlag)
                {
                    iconDestWidth = iconSizePercent * bmp.Width / 100f;
                    iconDestHeight = drawIconFlag ? iconDestWidth * icon.Height / icon.Width : 0;
                    iconX = (bmp.Width - iconDestWidth) / 2;
                    iconY = (bmp.Height - iconDestHeight) / 2;

                    var centerDest = new RectangleF(iconX - iconBorderWidth, iconY - iconBorderWidth, iconDestWidth + iconBorderWidth * 2, iconDestHeight + iconBorderWidth * 2);
                    iconPath = this.CreateRoundedRectanglePath(centerDest, iconBorderWidth * 2);
                }

                for (var x = 0; x < size + offset; x = x + pixelsPerModule)
                {
                    for (var y = 0; y < size + offset; y = y + pixelsPerModule)
                    {
                        var module = this.QrCodeData.ModuleMatrix[(y + pixelsPerModule) / pixelsPerModule - 1][(x + pixelsPerModule) / pixelsPerModule - 1];

                        if (module)
                        {
                            var r = new Rectangle(x - offset, y - offset, pixelsPerModule, pixelsPerModule);

                            if (drawIconFlag)
                            {
                                var region = new Region(r);
                                region.Exclude(iconPath);
                                gfx.FillRegion(darkBrush, region);
                            }
                            else
                            {
                                gfx.FillRectangle(darkBrush, r);
                            }
                        }
                        else
                        {
                            gfx.FillRectangle(lightBrush, new Rectangle(x - offset, y - offset, pixelsPerModule, pixelsPerModule));
                        }
                    }
                }

                if (drawIconFlag)
                {
                    var iconDestRect = new RectangleF(iconX, iconY, iconDestWidth, iconDestHeight);
                    gfx.DrawImage(icon, iconDestRect, new RectangleF(0, 0, icon.Width, icon.Height), GraphicsUnit.Pixel);
                }

                gfx.Save();
            }

            return bmp;
    

}

Upvotes: 1

Views: 55

Answers (1)

Scienceveli
Scienceveli

Reputation: 1

public static string RenderQrCodeNewTruckerLogo(string P_ENC_Text, Color color, string GovName)
{
    string ImageName = "NewTruckerLogo.png";
    
    string level = "L";//comboBoxECC.SelectedItem.ToString();
    QRCodeGenerator.ECCLevel eccLevel = (QRCodeGenerator.ECCLevel)(level == "L" ? 0 : level == "M" ? 1 : level == "Q" ? 2 : 3);
    using (QRCodeGenerator qrGenerator = new QRCodeGenerator())
    {
        using (QRCodeData qrCodeData = qrGenerator.CreateQrCode(P_ENC_Text, eccLevel))
        {
            using (QRCode qrCode = new QRCode(qrCodeData))
            {
                MemoryStream ms = new MemoryStream();
                //Bitmap bitmap = qrCode.GetGraphic(20, color, Color.White,
                //    null, 15);
                Bitmap bitmap = qrCode.GetGraphic(30, color, Color.White,
                    null, 15);
                var LogoFilePath = Path.Combine(HttpContext.Current.Server.MapPath("~/assets/images/"), ImageName);
                //var logoImg = Image.FromFile(LogoFilePath);
                Bitmap logo = new Bitmap(LogoFilePath);

sis that mdi me

Upvotes: -1

Related Questions