अभी मैं Asp.Net से QrCoder का उपयोग करके अपना क्यूआर-कोड बना रहा हूं। आप मेरा कोड नीचे देख सकते हैं:
SvgQrCode:

    public void UpdateText(string value)
    {
        using (var qrGenerator = new QRCodeGenerator())
        {
            using (var qrCodeData = qrGenerator.CreateQrCode(value, QRCodeGenerator.ECCLevel.Q))
            {
                using (var qrCode = new QRCode(qrCodeData))
                {
                    using (var bitmap = qrCode.GetGraphic(1, Color.Black, Color.White, false))
                    {
                        Image.FromData(bitmap);
                    }
                    Text = value;
    }   }   }   }

एक्सएमएल:

   <Image Source="{Binding Element.ImageSource}"
          RenderOptions.BitmapScalingMode="NearestNeighbor"
          RenderOptions.EdgeMode="Aliased"
          Width="{Binding Element.Width}"
          Height="{Binding Element.Height}"
          Stretch="Uniform">

क्या होता है: जेनरेट किए गए क्यूआर-कोड में कुछ हल्का शोर है जिसे आप यहां बाईं ओर स्क्रीनशॉट में देख सकते हैं (बाईं ओर ग्रे8, दाईं ओर ब्लैकव्हाइट):

यहां छवि विवरण दर्ज करें
मैंने क्या प्रयास किया: मैंने विधि Decode Pixelformats को Gray8 से BlackWhite में बदल दिया। परिणाम ऊपर का स्क्रीनशॉट है (दाईं ओर क्यूआर कोड)।

 internal static BitmapSource Decode(string value, int? pixelWidth, BitmapCacheOption cacheOption = BitmapCacheOption.OnLoad)
 {
        // ..some code..
        var grey = new FormatConvertedBitmap(bitmap, PixelFormats.Gray8, BitmapPalettes.Gray256, 1.0);
        return grey;
 }

एक और चीज जो मैंने आजमाई वह है qrCode.GetGraphic(1) को qrCode.GetGraphic(10) जैसे कुछ उच्चतर में बदलना, जो pixels per module को बढ़ाता है। लेकिन यह समस्या को ठीक करने का एक साफ-सुथरा तरीका नहीं है, क्योंकि शोर बहुत कम होता जा रहा है (इसलिए अब आप इसे शायद ही देख सकते हैं) और प्रति मॉड्यूल पिक्सेल बढ़ रहे हैं।

मेरी समस्या: मैं qr कोड, बार कोड और छवियों के लिए डिकोड विधि का उपयोग कर रहा हूं। तो अगर मैं एक छवि जोड़ूंगा तो यह श्वेत और श्याम होगी। बेशक मैं एक if-statement का उपयोग कर सकता हूं और जांच सकता हूं कि यह एक छवि या क्यूआर/बार-कोड है या नहीं। लेकिन PixelFormats.Gray8 शोर क्यों मचा रहा है? यह साफ क्यों नहीं है?

1
Perazim 26 मार्च 2020, 14:20

1 उत्तर

सबसे बढ़िया उत्तर

मुझे समस्या मिली। मैंने उन पंक्तियों को नज़रअंदाज़ कर दिया और महसूस नहीं किया कि .jpeg को प्रारूप के रूप में चुना गया था:

public void FromData(Bitmap bitmap)
{
   using (var ms = new MemoryStream())
   {
     bitmap.Save(ms, ImageFormat.Jpeg);
     //...
0
Perazim 31 मार्च 2020, 08:53