예제 #1
0
        public HttpResponseMessage GetQRImg(string wxid, string sid)
        {
            var wx = WXManager.Current[wxid];

            if (wx == null)
            {
                return(Request.CreateResponse(HttpStatusCode.NotFound));
            }
            var s = new StudentBLL(wx.DBConnect).GetByID(sid).QueryObject;

            if (s == null)
            {
                return(Request.CreateResponse(HttpStatusCode.NotFound));
            }
            QrEncoder qrEncoder = new QrEncoder(ErrorCorrectionLevel.H);
            QrCode    qrCode    = new QrCode();
            //var temp = string.Format("{0}{1}", !string.IsNullOrEmpty(s.IDNumber) ? s.IDNumber : s.ID.PadLeft(18, ' '), s.Name);
            //var base64 = Convert.ToBase64String(System.Text.ASCIIEncoding.UTF8.GetBytes(temp));
            var base64 = s.ID;

            qrEncoder.TryEncode(base64, out qrCode);

            var          renderer = new DrawingBrushRenderer(new FixedModuleSize(5, QuietZoneModules.Two));
            MemoryStream ms       = new MemoryStream();

            renderer.WriteToStream(qrCode.Matrix, ImageFormatEnum.JPEG, ms);

            HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);

            result.Content = new ByteArrayContent(ms.ToArray());
            //Inline是直接显示,attachment作为附件下载
            result.Content.Headers.ContentType = new MediaTypeHeaderValue("image/jpg");
            return(result);
        }
예제 #2
0
        void how_to_print_page_handle(object sender, PrintPageEventArgs e)
        {
            int h = (int)(e.PageSettings.PrintableArea.Height);
            int w = (int)(e.PageSettings.PrintableArea.Width);

            QrEncoder qrEncoder = new QrEncoder(ErrorCorrectionLevel.M);

            float side = e.PageSettings.PrintableArea.Width;

            side = 100; //=> 1"
            if (e.PageSettings.PrintableArea.Height < e.PageSettings.PrintableArea.Width)
            {
                side = e.PageSettings.PrintableArea.Height;
            }
            float modesize = side / 100 * e.Graphics.DpiX;

            QrCode qrCode = qrEncoder.Encode("0123456789");


            //ISizeCalculation iSizeCal = new FixedModuleSize(2, QuietZoneModules.Zero);
            // This works with the Brady on a very small label
            ISizeCalculation iSizeCal = new FixedCodeSize((int)modesize - 16, QuietZoneModules.Zero);

            DrawingBrushRenderer dRenderer = new DrawingBrushRenderer(iSizeCal,
                                                                      System.Windows.Media.Brushes.Black, System.Windows.Media.Brushes.White);

            string test = "test1";

            if (test == "test1")
            {
                MemoryStream mem_stream = new MemoryStream();
                dRenderer.WriteToStream(qrCode.Matrix, ImageFormatEnum.BMP, mem_stream);

                Bitmap bitmap = new Bitmap(mem_stream);
                bitmap.SetResolution(e.Graphics.DpiX, e.Graphics.DpiY);
                //Graphics graphics = Graphics.FromImage(bitmap);
                e.Graphics.DrawImage(bitmap, 0, 0);
            }
            else
            {
                System.Windows.Point dpipoint     = new System.Windows.Point(e.Graphics.DpiX, e.Graphics.DpiY);
                BitmapSource         bitmapsource = dRenderer.WriteToBitmapSource(qrCode.Matrix, dpipoint);
                BitmapFrame          bitmapframe  = BitmapFrame.Create(bitmapsource);

                BitmapEncoder bitmapencoder = new BmpBitmapEncoder();
                bitmapencoder.Frames.Add(bitmapframe);

                MemoryStream mem_stream = new MemoryStream();
                bitmapencoder.Save(mem_stream);

                System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(mem_stream);
                e.Graphics.DrawImage(bitmap, 0, 0);
            }
        }
예제 #3
0
        private void buttonSave_Click(object sender, EventArgs e)
        {
            SaveFileDialog saveFileDialog = new SaveFileDialog();

            saveFileDialog.Filter     = @"PNG (*.png)|*.png|Bitmap (*.bmp)|*.bmp|Encapsuled PostScript (*.eps)|*.eps";
            saveFileDialog.FileName   = Path.GetFileName(GetFileNameProposal());
            saveFileDialog.DefaultExt = "png";

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

            if (saveFileDialog.FileName.EndsWith("eps"))
            {
                BitMatrix matrix = qrCodeGraphicControl1.GetQrMatrix();

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

                using (var file = File.OpenWrite(saveFileDialog.FileName))
                {
                    renderer.WriteToStream(matrix, file);
                }
            }
            else
            {
                DrawingBrushRenderer dRender = new DrawingBrushRenderer(new FixedModuleSize(5, QuietZoneModules.Four));
                BitMatrix            matrix  = qrCodeGraphicControl1.GetQrMatrix();
                using (FileStream stream = new FileStream(saveFileDialog.FileName, FileMode.Create))
                {
                    dRender.WriteToStream(matrix, ImageFormatEnum.PNG, stream);
                }

                //WriteableBitmapRenderer wRender = new WriteableBitmapRenderer(new FixedModuleSize(15, QuietZoneModules.Four));
                //BitMatrix matrix = qrCodeGraphicControl1.GetQrMatrix();
                //using (FileStream stream = new FileStream(saveFileDialog.FileName, FileMode.Create))
                //{
                //    wRender.WriteToStream(matrix, ImageFormatEnum.PNG, stream);
                //}

                //GraphicsRenderer gRender = new GraphicsRenderer(new FixedModuleSize(15, QuietZoneModules.Four));
                //BitMatrix matrix = qrCodeGraphicControl1.GetQrMatrix();
                //using (FileStream stream = new FileStream(saveFileDialog.FileName, FileMode.Create))
                //{
                //    gRender.WriteToStream(matrix, ImageFormat.Png, stream);
                //}
            }
        }
예제 #4
0
        Bitmap encodeToBitMap(string data,
                              double dimension_inches,
                              float dpi_x = 600,
                              float dpi_y = 600,
                              ErrorCorrectionLevel correction_level = ErrorCorrectionLevel.L,
                              QuietZoneModules quite_zone           = QuietZoneModules.Zero
                              )
        {
            QrEncoder qrEncoder = new QrEncoder(correction_level);
            QrCode    qrCode    = qrEncoder.Encode(data);

            // Calculate number of pixels.  Note we use dpi in x direction
            // but we should probably use whichever is lowest
            int pixels = (int)(dimension_inches * dpi_x);

            // Check whether we have enough space
            //if (pixels < qrCode.Matrix.Width)
            //throw new Exception("Too small");

            ISizeCalculation iSizeCal = new FixedCodeSize(pixels, quite_zone);

            DrawingBrushRenderer dRenderer = new DrawingBrushRenderer(iSizeCal, System.Windows.Media.Brushes.Black, System.Windows.Media.Brushes.White);
            //DrawingBrushRenderer dRenderer = new DrawingBrushRenderer(iSizeCal, System.Windows.Media.Brushes.Black, System.Windows.Media.Brushes.LightGray);


            MemoryStream mem_stream = new MemoryStream();

            dRenderer.WriteToStream(qrCode.Matrix, ImageFormatEnum.BMP, mem_stream);
            Bitmap bitmap = new Bitmap(mem_stream);

            bitmap.SetResolution(dpi_x, dpi_y);

            // A different way to do the same.  Just incase the bitmap.SetResolution function does not work
            //System.Windows.Point dpipoint = new System.Windows.Point(dpi, dpi);
            //BitmapSource bitmapsource = dRenderer.WriteToBitmapSource(qrCode.Matrix, dpipoint);
            //MemoryStream outStream = new MemoryStream();
            //BitmapEncoder bitmapencoder = new BmpBitmapEncoder();
            //BitmapFrame bitmapframe = BitmapFrame.Create(bitmapsource);
            //bitmapencoder.Frames.Add(bitmapframe);
            //bitmapencoder.Save(outStream);
            //Bitmap bitmap = new System.Drawing.Bitmap(outStream);

            return(bitmap);
        }
예제 #5
0
        private void SaveImageFile(double imageSize)
        {
            SaveFileDialog saveFileDIalog = new SaveFileDialog();

            saveFileDIalog.Filter =
                @"PNG (.png)|*.png|Bitmap (.bmp)|*.bmp|JEPG (.jpg)|*.jpg|GIF (.gif)|*.gif|TIFF (.tiff)|*.tiff|WDP (.wdp)|*.wdp|EPS (.eps)|*.eps";
            saveFileDIalog.DefaultExt       = ".png";
            saveFileDIalog.FileName         = "QrCode";
            saveFileDIalog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures);

            if (saveFileDIalog.ShowDialog() == false)
            {
                return;
            }

            string          fileName      = saveFileDIalog.FileName;
            ImageFormatEnum imageFormat   = ImageFormatEnum.PNG;
            string          fileNameCheck = saveFileDIalog.FileName.ToLower();

            if (fileNameCheck.EndsWith("png"))
            {
                imageFormat = ImageFormatEnum.PNG;
            }
            else if (fileNameCheck.EndsWith("bmp"))
            {
                imageFormat = ImageFormatEnum.BMP;
            }
            else if (fileNameCheck.EndsWith("jpg"))
            {
                imageFormat = ImageFormatEnum.JPEG;
            }
            else if (fileNameCheck.EndsWith("gif"))
            {
                imageFormat = ImageFormatEnum.GIF;
            }
            else if (fileNameCheck.EndsWith("tiff"))
            {
                imageFormat = ImageFormatEnum.TIFF;
            }
            else if (fileNameCheck.EndsWith("wdp"))
            {
                imageFormat = ImageFormatEnum.WDP;
            }
            else if (fileNameCheck.EndsWith("eps"))
            {
                Properties.Settings.Default.SaveSize = imageSize;
                Properties.Settings.Default.Save();
                CreateEPSImage(imageSize, fileName);
                return;
            }
            else
            {
                return;
            }

            Properties.Settings.Default.SaveSize = imageSize;
            Properties.Settings.Default.Save();
            int pixelSize = (int)(imageSize * 96);

            DrawingBrushRenderer dRenderer = new DrawingBrushRenderer(new FixedCodeSize(pixelSize, QuietZoneModules.Two),
                                                                      new SolidColorBrush(DarkColor), new SolidColorBrush(LightColor));

            using (FileStream stream = new FileStream(fileName, FileMode.Create))
            {
                dRenderer.WriteToStream(QrMatrix, imageFormat, stream);
            }
        }