Heim  >  Artikel  >  Backend-Entwicklung  >  c# verwendet zxing, um nach dem Zuschneiden des Bildes einen QR-Code zu generieren

c# verwendet zxing, um nach dem Zuschneiden des Bildes einen QR-Code zu generieren

高洛峰
高洛峰Original
2017-01-13 11:22:131568Durchsuche

private void button1_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(this.textBox1.Text.Trim()))
            {
                MessageBox.Show("请输入需要转换的信息!");
                return;
            }
            string content = textBox1.Text;
            Hashtable hints= new Hashtable();   
            hints.Add(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);//纠错级别
            hints.Add(EncodeHintType.CHARACTER_SET, "UTF-8");//编码格式
            ByteMatrix byteMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, 300, 300, hints);
            Bitmap bitmap = toBitmap(byteMatrix);
            pictureBox1.Image = bitmap;

            SaveFileDialog sFD = new SaveFileDialog();
            sFD.Filter = "*.png|*.png";
            sFD.AddExtension = true;
            try
            {
                if (sFD.ShowDialog() == DialogResult.OK)
                {
                    writeToFile(byteMatrix, System.Drawing.Imaging.ImageFormat.Png, sFD.FileName);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        public static void writeToFile(ByteMatrix matrix, System.Drawing.Imaging.ImageFormat format, string file)
        {
            System.Drawing.Imaging.EncoderParameters eps = new System.Drawing.Imaging.EncoderParameters();
            eps.Param[0] = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L);
            Bitmap bmap = toBitmap(matrix);
            bmap.Save(file, format);
        }
        public static Bitmap toBitmap(ByteMatrix matrix)
        {
            int width = matrix.Width;
            int height = matrix.Height;
            Bitmap bmap = new Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
            for (int x = 0; x < width; x++)
            {
                for (int y = 0; y < height; y++)
                {
                    bmap.SetPixel(x, y, matrix.get_Renamed(x, y) != -1 ? ColorTranslator.FromHtml("Purple") : ColorTranslator.FromHtml("0xFFFFFFFF"));//可以自定义颜色和背景色
                }
            }
            return bmap;     
        }

Weitere Artikel zur Verwendung von zxing zum Generieren von QR-Codes nach dem Zuschneiden von Bildern mit c# finden Sie auf der chinesischen PHP-Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn