protected void btnContactDetails_Click(object sender, EventArgs e) { string code = string.Concat(this.txtType.Text, ";", this.txtContactID.Text, ";", this.txtcontactname.Text, ";", this.txtcontactlastname.Text, this.txtDefaultCurrency.Text, this.txtalternateCurrency.Text, this.txtcontactDOB.Text, this.txtLanguage.Text); QRCodeGenerator qrGenerator = new QRCodeGenerator(); QRCodeData qrCodeData = qrGenerator.CreateQrCode(code, QRCodeGenerator.ECCLevel.Q); System.Web.UI.WebControls.Image imgBarCode = new System.Web.UI.WebControls.Image(); imgBarCode.Height = 150; imgBarCode.Width = 150; QRCode qrCode = new QRCode(qrCodeData); using (Bitmap bitMap = qrCode.GetGraphic(20)) { using (MemoryStream ms = new MemoryStream()) { bitMap.Save(ms, System.Drawing.Imaging.ImageFormat.Png); byte[] byteImage = ms.ToArray(); imgBarCode.ImageUrl = "data:image/png;base64," + Convert.ToBase64String(byteImage); } plBarCode.Controls.Add(imgBarCode); } }
protected void btnTrxP2B_Click(object sender, EventArgs e) { string code = string.Concat(this.txtp2bmerchantid.Text, ";", this.txtp2bAmount.Text, ";", this.txtp2bReference.Text, ";", this.ddlp2bCurrency.SelectedValue); QRCodeGenerator qrGenerator = new QRCodeGenerator(); QRCodeData qrCodeData = qrGenerator.CreateQrCode(code, QRCodeGenerator.ECCLevel.Q); System.Web.UI.WebControls.Image imgBarCode = new System.Web.UI.WebControls.Image(); imgBarCode.Height = 150; imgBarCode.Width = 150; QRCode qrCode = new QRCode(qrCodeData); using (Bitmap bitMap = qrCode.GetGraphic(20)) { using (MemoryStream ms = new MemoryStream()) { bitMap.Save(ms, System.Drawing.Imaging.ImageFormat.Png); byte[] byteImage = ms.ToArray(); imgBarCode.ImageUrl = "data:image/png;base64," + Convert.ToBase64String(byteImage); } plBarCode.Controls.Add(imgBarCode); } }
/// <summary> /// 绘制二维码 /// </summary> /// <param name="unionid">存储内容id</param> /// <param name="url">存储内容</param> /// <param name="pixel">像素大小</param> /// <returns></returns> public Code InitCode(string unionid, string url, int pixel) { QRCodeData codeData = _generator.CreateQrCode(url, QRCodeGenerator.ECCLevel.M, true); QRCoder.QRCode qrcode = new QRCoder.QRCode(codeData); Bitmap qrImage = qrcode.GetGraphic(pixel, Color.Black, Color.White, true); MemoryStream stream = new MemoryStream(); qrImage.Save(stream, System.Drawing.Imaging.ImageFormat.Png); byte[] bytedata = stream.ToArray(); Code code = new Code(); DateTimeOffset dto = new DateTimeOffset(DateTime.Now); var unixTime = dto.ToUnixTimeSeconds(); code.Id = unixTime.ToString(); code.UnionId = unionid; code.Info = url; code.Size = pixel; code.CodeImg = bytedata; _codes.InsertOne(code); return(code); }
public async Task <byte[]> GenerarQr(string texto, string colorOscuro, string colorClaro) { return(await Task.Factory.StartNew(() => { QRCodeGenerator qrGenerator = new QRCodeGenerator(); QRCodeData qrData = qrGenerator.CreateQrCode( texto, QRCodeGenerator.ECCLevel.M ); QRCode qrCode = new QRCode(qrData); Bitmap bitmap = qrCode.GetGraphic( pixeles_por_punto, DecodificarColor(colorOscuro), DecodificarColor(colorClaro), true ); using (var ms = new MemoryStream()) { bitmap.Save(ms, ImageFormat.Png); return ms.ToArray(); } })); }
public void MaterialQRCode(long storeId, long detailboxId) { Wms_stockoutdetail_box detailBox = _client.Queryable <Wms_stockoutdetail_box>() .First(c => c.DetailBoxId == detailboxId); Wms_stockoutdetail detail = _client.Queryable <Wms_stockoutdetail>() .First(c => c.StockOutDetailId == detailBox.StockOutDetailId); Wms_stockout stockout = _client.Queryable <Wms_stockout>() .First(c => c.StockOutId == detail.StockOutId); string dateStr = DateTime.Now.ToString("yyyyMMddhhmmssfff"); string strQR = $"{detail.UniqueIndex}@@{detailBox.StockInUniqueIndex}@@{dateStr}@@{detailBox.PlanQty} "; QRCodeGenerator qrGenerator = new QRCodeGenerator(); QRCodeData qrCodeData = qrGenerator.CreateQrCode( strQR, QRCodeGenerator.ECCLevel.Q); QRCode qrCode = new QRCode(qrCodeData); Bitmap qrCodeImage = qrCode.GetGraphic(20); qrCodeImage.Save(this.Response.Body, ImageFormat.Png); }
// GET: Tables public async Task <IActionResult> Index() { if (User.Identity.IsAuthenticated == false) { return(RedirectToAction("Login", "Identity")); } using (MemoryStream ms = new MemoryStream()) { QRCodeGenerator qrGenerator = new QRCodeGenerator(); QRCodeData qrCodeData = qrGenerator.CreateQrCode("TEXT", QRCodeGenerator.ECCLevel.Q); QRCode qrCode = new QRCode(qrCodeData); using (Bitmap bitMap = qrCode.GetGraphic(20)) { bitMap.Save(ms, ImageFormat.Png); var image = "data:image/png;base64," + Convert.ToBase64String(ms.ToArray()); ViewBag.Code = image; } } return(View(await _context.Tables.ToListAsync())); }
public ActionResult CreateCode(string key) { // 生成二维码的内容 string strCode = string.Format("{0}{1}{2}", @"https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8e37ff182337cd1f&redirect_uri=http%3a%2f%2frodman.nat300.top%2fapi%2fwchart%2fCodeLogin&response_type=code&scope=snsapi_userinfo&state=", key, @"&connect_redirect=1#wechat_redirect"); QRCodeGenerator qrGenerator = new QRCoder.QRCodeGenerator(); QRCodeData qrCodeData = qrGenerator.CreateQrCode(strCode, QRCodeGenerator.ECCLevel.Q); QRCode qrcode = new QRCode(qrCodeData); // qrcode.GetGraphic 方法可参考最下发“补充说明” Bitmap qrCodeImage = qrcode.GetGraphic(5, Color.Black, Color.White, null, 15, 6, false); MemoryStream ms = new MemoryStream(); qrCodeImage.Save(ms, ImageFormat.Jpeg); // 如果想保存图片 可使用 qrCodeImage.Save(filePath); //// 响应类型 //context.Response.ContentType = "image /Jpeg"; ////输出字符流 //context.Response.BinaryWrite(ms.ToArray()); return(File(ms.ToArray(), "image/Jpeg")); }
public ActionResult EventQR(int?id) { if (id == null) { return(new StatusCodeResult((int)HttpStatusCode.BadRequest)); } using (MemoryStream ms = new MemoryStream()) { QRCodeGenerator qrGenerator = new QRCodeGenerator(); string url = urlGenerator.generateURL(id.Value, db); ViewBag.FeedbackURL = url; QRCodeData qrCodeData = qrGenerator.CreateQrCode(url, QRCodeGenerator.ECCLevel.Q); QRCode qrCode = new QRCode(qrCodeData); using (Bitmap bitMap = qrCode.GetGraphic(20)) { bitMap.Save(ms, ImageFormat.Png); ViewBag.QRCodeImage = "data:image/png;base64," + Convert.ToBase64String(ms.ToArray()); } } return(View()); }
private void bt_pdf_Click(object sender, EventArgs e) { MySqlDataAdapter donnee = new MySqlDataAdapter(); MySqlConnection conn = new MySqlConnection(_connectionString); conn.Open(); string sql = "select * from participant where Email = '" + cb_mail.Text + "'"; MySqlCommand cmd = new MySqlCommand(sql, conn); MySqlDataReader rdr = cmd.ExecuteReader(); rdr.Read(); string prenom = rdr.GetString(3); string nom = rdr.GetString(2); string departement = rdr.GetString(4); QRCodeGenerator qrGenerator = new QRCodeGenerator(); QRCodeData qrCodeData = qrGenerator.CreateQrCode(cb_mail.Text, QRCodeGenerator.ECCLevel.Q); QRCode qrCode = new QRCode(qrCodeData); Bitmap qrCodeImage = qrCode.GetGraphic(5); XImage qrXimage = qrCodeImage; PdfDocument document = new PdfDocument(); document.Info.Title = prenom + cb_mail.Text; PdfPage page = document.AddPage(); XGraphics gfx = XGraphics.FromPdfPage(page); XFont font = new XFont("Code 128", 60, XFontStyle.Regular); XFont font2 = new XFont("LEMONMILK-Bold", 60, XFontStyle.Regular); gfx.DrawImage(qrXimage, 240, 300); gfx.DrawString(nom + " " + prenom, font2, XBrushes.Black, new XRect(0, -350, page.Width, page.Height), XStringFormats.Center); gfx.DrawString(departement, font2, XBrushes.Black, new XRect(0, -150, page.Width, page.Height), XStringFormats.Center); string filename = prenom + nom + "badge.pdf"; document.Save(filename); Process.Start(filename); }
/// <summary> /// Generate a setup code for a Google Authenticator user to scan /// </summary> /// <param name="issuer">Issuer ID (the name of the system, i.e. 'MyApp'), can be omitted but not recommended https://github.com/google/google-authenticator/wiki/Key-Uri-Format </param> /// <param name="accountTitleNoSpaces">Account Title (no spaces)</param> /// <param name="accountSecretKey">Account Secret Key as byte[]</param> /// <param name="QRPixelsPerModule">Number of pixels per QR Module (2 = ~120x120px QRCode)</param> /// <returns>SetupCode object</returns> public SetupCode GenerateSetupCode(string issuer, string accountTitleNoSpaces, byte[] accountSecretKey, int QRPixelsPerModule, bool generateQrCode = true) { accountTitleNoSpaces = RemoveWhitespace(Uri.EscapeUriString(accountTitleNoSpaces)); string encodedSecretKey = Base32Encoding.ToString(accountSecretKey); string provisionUrl; if (String.IsNullOrWhiteSpace(issuer)) { provisionUrl = String.Format("otpauth://totp/{0}?secret={1}", accountTitleNoSpaces, encodedSecretKey.Trim('=')); } else { // https://github.com/google/google-authenticator/wiki/Conflicting-Accounts // Added additional prefix to account otpauth://totp/Company:[email protected] for backwards compatibility provisionUrl = String.Format("otpauth://totp/{2}:{0}?secret={1}&issuer={2}", accountTitleNoSpaces, encodedSecretKey.Trim('='), UrlEncode(issuer)); } string qrCodeUrl = string.Empty; if (generateQrCode) { using (QRCodeGenerator qrGenerator = new QRCodeGenerator()) using (QRCodeData qrCodeData = qrGenerator.CreateQrCode(provisionUrl, QRCodeGenerator.ECCLevel.Q)) using (QRCode qrCode = new QRCode(qrCodeData)) using (Bitmap qrCodeImage = qrCode.GetGraphic(QRPixelsPerModule)) using (MemoryStream ms = new MemoryStream()) { qrCodeImage.Save(ms, System.Drawing.Imaging.ImageFormat.Png); qrCodeUrl = String.Format("data:image/png;base64,{0}", Convert.ToBase64String(ms.ToArray())); } } return(new SetupCode(accountTitleNoSpaces, encodedSecretKey.Trim('='), qrCodeUrl) { ProvisionUrl = provisionUrl }); }
public ContactDetail(Person paPerson, string paDepartment, string paRoom) { InitializeComponent(); LFirstName.Content = paPerson.FirstName; LLastName.Content = paPerson.LastName; LPhone.Content = paPerson.Phone; LEmail.Content = paPerson.Email; LDepartment.Content = paDepartment; LRoom.Content = paRoom; PayloadGenerator.ContactData generator = new PayloadGenerator.ContactData(PayloadGenerator.ContactData.ContactOutputType.VCard3, paPerson.FirstName, paPerson.LastName, null, paPerson.Phone, null, null, paPerson.Email); string payload = generator.ToString(); QRCodeGenerator qrGenerator = new QRCodeGenerator(); QRCodeData qrCodeData = qrGenerator.CreateQrCode(payload, QRCodeGenerator.ECCLevel.Q); QRCode qrCode = new QRCode(qrCodeData); var qrCodeAsBitmap = qrCode.GetGraphic(20); using (var memory = new MemoryStream()) { qrCodeAsBitmap.Save(memory, ImageFormat.Png); memory.Position = 0; var bitmapImage = new BitmapImage(); bitmapImage.BeginInit(); bitmapImage.StreamSource = memory; bitmapImage.CacheOption = BitmapCacheOption.OnLoad; bitmapImage.EndInit(); bitmapImage.Freeze(); ImageQR.Source = bitmapImage; } ImageQR.Stretch = Stretch.Uniform; //ImageQR.Source = retval; }
protected void Page_Load(object sender, EventArgs e) { if (Request.QueryString.Count > 0) { string title = Request.QueryString["title"] ?? ""; string sn = Request.QueryString["sn"] ?? ""; string pId = Request.QueryString["pId"] ?? ""; string lId = Request.QueryString["lId"] ?? ""; if (pId.Length > 0) { Page.Title = title; Page.MetaDescription = title; promotionImage.ImageUrl = "FileServer/EddystonePromotion/" + pId + ".png"; } if (pId.Length > 0 && lId.Length > 0) { QRCodeGenerator qrGenerator = new QRCodeGenerator(); var text = lId + "-" + pId + "-" + Guid.NewGuid().ToString().Replace("-", ""); QRCodeData qrCodeData = qrGenerator.CreateQrCode(text, QRCodeGenerator.ECCLevel.Q); QRCode qrCode = new QRCode(qrCodeData); Bitmap qrCodeImage = qrCode.GetGraphic(20); System.Web.UI.WebControls.Image imgBarCode = new System.Web.UI.WebControls.Image(); imgBarCode.Height = 180; imgBarCode.Width = 180; imgBarCode.CssClass = "image2"; using (Bitmap bitMap = qrCode.GetGraphic(20)) { using (MemoryStream ms = new MemoryStream()) { bitMap.Save(ms, System.Drawing.Imaging.ImageFormat.Png); byte[] byteImage = ms.ToArray(); imgBarCode.ImageUrl = "data:image/png;base64," + Convert.ToBase64String(byteImage); } plBarCode.Controls.Add(imgBarCode); } } } }
private static void LitwoOjczyzno1do40() { QRCodeGenerator qrGenerator = new QRCodeGenerator(); int version = 1; for (int i = 1; i < 2955; i++) { int verCalc = 0; try { verCalc = QRCodeGenerator.GetVersion(i, EncodingMode.Byte, ECCLevel.L); } catch (Exception) { verCalc = 41; } if (version < verCalc) { QRCodeData qrCodeData = qrGenerator.CreateQrCode( Litwo.Substring(0, i - 1), QRCodeGenerator.ECCLevel.L, requestedVersion: version);; QRCode qrc = new QRCode(qrCodeData); int px = 370 / (21 + (4 * version)); Console.WriteLine(version + " , " + (i - 1)); var b = qrc.GetGraphic(px, new ColorProviders.ColorProviderBW()); b.Save(String.Format("litwo{0:00}.png", version)); version++; } } }
private static void DataWordAnim() { QRCodeGenerator qrGenerator = new QRCodeGenerator(); int frame = 240; while (true) { QRCodeData qrCodeData = qrGenerator.CreateQrCode( "👨🏭", QRCodeGenerator.ECCLevel.H, true, //requestedVersion: 2, forcedpattern: -1, maxBits: frame, doMasking: true ); QRCode qrc = new QRCode(qrCodeData); var b = qrc.GetGraphic( 20, //new ColorProviders.ColorProviderRysowankiAnim() //new ColorProviderBW() new ColorProviders.ColorProviderDebug2() , drawQuietZones: true ); b.Save(String.Format("anim_x{0:000}.png", frame)); if (frame++ > 240) //if (frame++ > qrCodeData.DataWordsLen) { Console.WriteLine(frame); break; } } }
public IActionResult Post(string postId) { var instanceMain = _repos.GetSingleDataById(postId); var instanceSend = new PostViewModel() { ID = instanceMain.ID, ContentHtml = instanceMain.ContentHtml, ContentInBrief = instanceMain.ContentInBrief, Title = instanceMain.Title, PostPictureName = instanceMain.PostPictureName, LastModifiedDateAndTime = instanceMain.LastModifiedDateAndTime }; instanceSend.Barcode = GetPostBrcode(); return(View(instanceSend)); Byte[] GetPostBrcode() { QRCodeGenerator qrGenerator = new QRCodeGenerator(); ViewData["Url"] = Microsoft.AspNetCore.Http.Extensions.UriHelper.GetDisplayUrl(Request); QRCodeData qrCodeData = qrGenerator.CreateQrCode(ViewData["Url"].ToString(), QRCodeGenerator.ECCLevel.Q); QRCode qrCode = new QRCode(qrCodeData); Bitmap qrCodeImage = qrCode.GetGraphic(20); return(GetImageBytesByBitmap(qrCodeImage)); Byte[] GetImageBytesByBitmap(Bitmap img) { using (MemoryStream stream = new MemoryStream()) { img.Save(stream, System.Drawing.Imaging.ImageFormat.Png); return(stream.ToArray()); } } } }
private void GenerateQRFromText(string text) { try { // Creating the elements here QRCodeGenerator qrGenerator = new QRCodeGenerator(); QRCodeData qrCodeData = qrGenerator.CreateQrCode(text, QRCodeGenerator.ECCLevel.Q); QRCode qrCode = new QRCode(qrCodeData); Bitmap qrCodeImage = qrCode.GetGraphic(20); // If user checks the check box saves the image with default name if (save_image_text == true) { using (FolderBrowserDialog f = new FolderBrowserDialog()) { if (f.ShowDialog() == DialogResult.OK) { qrCodeImage.Save(Path.Combine(f.SelectedPath, "qr-code-text.png")); } } } // show image pictureBoxText.Image = qrCodeImage; // free ram qrGenerator.Dispose(); qrCodeData.Dispose(); qrCode.Dispose(); } //If ex is catched displat //TODO : Custom Mess // Not more showing the message but an fix for this error catch (Exception e) { MetroSetMessageBox.Show(this, "An error : " + e.Message, "QR Creator"); } }
private void CreateBody(int participantId, Camp regCamp, RegistrationType regType) { pageBody = "<p><b>" + txtCharacterName.Text + "</b>,</p>"; pageBody += "<p>Thank you for registering to attend <b>Ragnarok XXXIV</b>"; if (regType.IsMerchant) { pageBody += " as a merchant"; } pageBody += "!</p>"; if (regCamp.Id != 0) { pageBody += "<p>You are marked down as an attendee staying in <b>" + regCamp.CampName + "</b>. If your camp changes, please contact "; pageBody += "<a href=\"mailto:[email protected]\">[email protected]</a> to change your camp, or you can change it "; pageBody += "when you arrive at Ragnarok.</p>"; } else { pageBody += "<p>You are marked down as not having a camp selected yet. If you choose a camp, please contact "; pageBody += "<a href=\"mailto:[email protected]\">[email protected]</a> to select your camp, or you can select your "; pageBody += "camp when you arrive at Ragnarok.</p>"; } pageBody += "<p>Your selected arrival date is <b>" + regType.ArrivalDate.ToString("MM/dd/yyyy") + "</b>.</p>"; QRCodeGenerator qrGenerator = new QRCodeGenerator(); QRCodeData qrCodeData = qrGenerator.CreateQrCode("http://dagorhirragnarok.com/CheckIn.aspx?pid=" + participantId, QRCodeGenerator.ECCLevel.Q); BitmapByteQRCode qrCode = new BitmapByteQRCode(qrCodeData); qrCodeBytes = qrCode.GetGraphic(20); string imgSource = "data:image/png;base64," + Convert.ToBase64String(qrCodeBytes, Base64FormattingOptions.None); pageBody += "<p>For expedited check-in at Troll when you arrive at Ragnarok, please present this QR Code to the Troll staff:</p>"; pageBody += "<center><p><img style=\"height: 300px; width: 300px;\" src=\"" + imgSource + "\" /></p></center>"; pageBody += "<p>We look forward to seeing you at Ragnarok!</p>"; pageBody += "<p>----------------------------------------------<br />Troll</p>"; }
/// <summary> /// 创建二维码返回文件路径名称 /// </summary> /// <param name="plainText">二维码内容</param> public static string CreateQRCodeToFile(string plainText) { try { string fileName = ""; if (String.IsNullOrEmpty(plainText)) { return(""); } //二维码文件目录 string filePath = System.Web.HttpContext.Current.Server.MapPath("~/") + "QRCoder\\"; if (!Directory.Exists(filePath)) { Directory.CreateDirectory(filePath); } string name = DateTime.Now.ToString("yyyyMMddHHmmss") + new Random().Next(100, 1000) + ".jpeg"; //创建二维码文件路径名称 fileName = filePath + name; QRCodeGenerator qrGenerator = new QRCodeGenerator(); //QRCodeGenerator.ECCLevel:纠错能力,Q级:约可纠错25%的数据码字 QRCodeData qrCodeData = qrGenerator.CreateQrCode(plainText, QRCodeGenerator.ECCLevel.Q); QRCode qrcode = new QRCode(qrCodeData); Bitmap qrCodeImage = qrcode.GetGraphic(15); qrCodeImage.Save(fileName, ImageFormat.Jpeg); //生成 http绝对路径 string relativeUrl = ConfigurationManager.AppSettings["ImageQRCode"].ToString(); string httpPath = relativeUrl + name; return(httpPath); } catch (Exception ex) { throw new Exception("创建二维码返回文件路径名称方法异常", ex); } }
public ActionResult Index() { try { int userid = HomeController.UserId; //Get userid of logged in user string room = Request.Query["roomid"]; //Get roomid from url parameter var request = HttpContext.Request; using (MemoryStream ms = new MemoryStream()) //QR-code generation { QRCodeGenerator qrGenerator = new QRCodeGenerator(); QRCodeData qrCodeData = qrGenerator.CreateQrCode("https://145.24.222.130" + request.Path + "?RoomId=" + room, QRCodeGenerator.ECCLevel.Q); QRCode qrCode = new QRCode(qrCodeData); using (Bitmap qrCodeImage = qrCode.GetGraphic(20)) { qrCodeImage.Save(ms, ImageFormat.Png); ViewBag.QRCodeImage = "data:image/png;base64," + Convert.ToBase64String(ms.ToArray()); } } Database db = new Database(); // Make instance of database class List <string[]> results = db.getReservations(room); // Get reservation from database object and store returned values in List of string []'s var json = JsonConvert.SerializeObject(results); //Convert previous list of string []'s to json object ViewData["results"] = json; //Hands over json object to view return(View()); //View gets returned with viewdata } catch (Exception e) //Exception catcher { Debug.WriteLine("Index Schedule Exception: {0}", e); return(RedirectToAction("Error", "Home")); throw; } }
public void InsertQrCodePurchaseInfo(int userId, int productId) { var product = productRepository.Read(productId); var user = userRepository.Read(userId); string purchaseInfo = $"At {DateTime.Now.ToShortTimeString()} {user.UserName} " + $"purchased {product.ProductName}"; QRCodeGenerator qrGenerator = new QRCodeGenerator(); QRCodeData qrCodeData = qrGenerator.CreateQrCode(purchaseInfo, QRCodeGenerator.ECCLevel.Q); QRCode qrCode = new QRCode(qrCodeData); Bitmap qrCodeImage = qrCode.GetGraphic(20); using (MemoryStream ms = new MemoryStream()) { qrCodeImage.Save(ms, ImageFormat.Png); qrCodeRepository.Insert(new QrCodeEntity() { UserId = userId, QrCodeType = QrCodeType.TextEncodedQrCode, Content = ms.ToArray() }); } }
public static void GenQRCode(String message, String Code) { QRCodeGenerator qrGenerator = new QRCodeGenerator(); Cloudinary _cloudinary = new Cloudinary(new Account("dpciaiobf", "546941639243358", "-clBvD99twwKZUYzhb2eLQDt7SU")); QRCodeData qrCodeData = qrGenerator.CreateQrCode(message, QRCodeGenerator.ECCLevel.Q); QRCode qrCode = new QRCode(qrCodeData); Bitmap qrCodeImage = qrCode.GetGraphic(20); System.IO.MemoryStream stream = new MemoryStream(); qrCodeImage.Save(stream, ImageFormat.Png); var bytes = ((MemoryStream)stream).ToArray(); System.IO.Stream inputStream = new MemoryStream(bytes); ImageUploadParams a = new ImageUploadParams { File = new FileDescription(Guid.NewGuid().ToString(), inputStream), PublicId = Code }; _cloudinary.Upload(a); }
public void QRCodeTerminalAsAscii() { WechahtyEvent.Subscribe <EventScanPayload>(async(eventData) => { if (eventData.Status == ScanStatus.Waiting || eventData.Status == ScanStatus.Timeout) { await Task.Run(() => { string qrcodeImageUrl = GetWechatGithubQrCode(eventData.Qrcode); Url generator = new Url(qrcodeImageUrl); string payload = generator.ToString(); QRCodeGenerator qrGenerator = new QRCodeGenerator(); QRCodeData qrCodeData = qrGenerator.CreateQrCode(payload, QRCodeGenerator.ECCLevel.L); AsciiQRCode qrCodeAsi = new AsciiQRCode(qrCodeData); string qrCodeAsAsciiArt = qrCodeAsi.GetGraphic(1); Console.WriteLine(qrCodeAsAsciiArt); }); } }); }
public static string GenerateQRCode(IWebHostEnvironment environment, string message) { string root = environment.WebRootPath + "\\qrcode"; string fileName = Guid.NewGuid().ToString() + ".png"; string path = Path.Combine(root, fileName); QRCodeGenerator qrGenerator = new QRCodeGenerator(); QRCodeData qrCodeData = qrGenerator.CreateQrCode(message, QRCodeGenerator.ECCLevel.Q); QRCode qrCode = new QRCode(qrCodeData); Bitmap qrCodeImage = qrCode.GetGraphic(20); using (MemoryStream memory = new MemoryStream()) { using (FileStream fs = new FileStream(path, FileMode.OpenOrCreate)) { qrCodeImage.Save(memory, ImageFormat.Png); byte[] bytes = memory.ToArray(); fs.Write(bytes, 0, bytes.Length); } } return(fileName); }
public bool GenerarQR(String RFCEmisor, String RFCReceptor, String Total) { bool Resultado = false; QRTexto = "https://verificacfdi.facturaelectronica.sat.gob.mx/default.aspx?&" + "id=" + UUID + "&fe=" + SelloCFD.Substring(SelloCFD.Length - 8, 8) + "&re=" + RFCEmisor + "&rr=" + RFCReceptor + "&tt=" + Total; QRCodeGenerator qrGenerator = new QRCodeGenerator(); QRCodeData qrCodeData = qrGenerator.CreateQrCode(QRTexto, QRCodeGenerator.ECCLevel.M); QRCode qrCode = new QRCode(qrCodeData); System.IO.MemoryStream mem = new System.IO.MemoryStream(); EncoderParameters encoderParameters = new EncoderParameters(1); encoderParameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 75L); qrCode.GetGraphic(20).Save(mem, GetEncoder(ImageFormat.Jpeg), encoderParameters); QR = mem.ToArray(); Resultado = true; mem.Close(); mem.Dispose(); qrCode.Dispose(); GC.WaitForFullGCComplete(); return(Resultado); }
public static void GenerateSave(string guid, string value) { Guid path = Guid.NewGuid(); QRCodeGenerator qrGenerator = new QRCodeGenerator(); QRCodeData qrCodeData = qrGenerator.CreateQrCode(value, QRCodeGenerator.ECCLevel.Q); Base64QRCode qrCode = new Base64QRCode(qrCodeData); string fpath = Path.Combine(HostingEnvironment.MapPath("~/Content/QR"), guid + ".png"); string qrCodeImage = qrCode.GetGraphic(20); if (File.Exists(fpath)) { File.Delete(fpath); } File.WriteAllBytes(fpath, Convert.FromBase64String(qrCodeImage)); // byte[] data = Convert.FromBase64String(qrCodeImage); //using (Image image = Image.FromStream(new MemoryStream(data, 0, data.Length))) // { // image.Save(fpath, ImageFormat.Png); // Or Png // } }
private void RenderQrCode() { string level = 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(textBoxQRCode.Text, eccLevel)) { using (QRCode qrCode = new QRCode(qrCodeData)) { pictureBoxQRCode.BackgroundImage = qrCode.GetGraphic(20, Color.Black, Color.White, GetIconBitmap(), (int)iconSize.Value); this.pictureBoxQRCode.Size = new System.Drawing.Size(pictureBoxQRCode.Width, pictureBoxQRCode.Height); //Set the SizeMode to center the image. this.pictureBoxQRCode.SizeMode = PictureBoxSizeMode.CenterImage; pictureBoxQRCode.SizeMode = PictureBoxSizeMode.StretchImage; } } } }
protected void lnkGenerateQRCode_Click(object sender, EventArgs e) { LinkButton lnk = sender as LinkButton; string data = "BA50D346-71E3-4146-8356-484685C98C39";// lnk.CommandArgument; // heleleik static qoyduq QRCodeGenerator qrGenerator = new QRCodeGenerator(); QRCodeData qrCodeData = qrGenerator.CreateQrCode(data, QRCodeGenerator.ECCLevel.Q); QRCode qrCode = new QRCode(qrCodeData); Bitmap qrCodeImage = qrCode.GetGraphic(20); Response.Clear(); Response.BufferOutput = false; string fileName = $"{data}.jpg"; Response.ContentType = "application/jpeg"; Response.AddHeader("content-disposition", $"attachment; filename={fileName}"); using (MemoryStream stream = new MemoryStream()) { qrCodeImage.Save(Response.OutputStream, ImageFormat.Jpeg); } Response.End(); }
private void RenderQrCode(string _QRname, string _qr) { QRCodeGenerator qrGenerator = new QRCodeGenerator(); QRCodeData qrCodeData = qrGenerator.CreateQrCode(_qr, QRCodeGenerator.ECCLevel.Q); QRCode qrCode = new QRCode(qrCodeData); string filePath = @"C:\Users\Public\Pictures\" + _QRname.Replace("|", "").ToString().Trim() + ".png"; Bitmap bitMap = qrCode.GetGraphic(20); System.Windows.Controls.Image imgBarCode = new System.Windows.Controls.Image(); imgBarCode.Height = 150; imgBarCode.Width = 150; using (MemoryStream ms = new MemoryStream()) { bitMap.Save(ms, System.Drawing.Imaging.ImageFormat.Png); byte[] byteImage = ms.ToArray(); bitMap.Save(filePath, System.Drawing.Imaging.ImageFormat.Png); } }
// GET: Home/Create public ActionResult Register() { //generate a string like this //otpauth://totp/Example:[email protected]?secret=JBSWY3DPEHPK3PXP&issuer=Example //secret that has 16 chars A-Z, not 0, not 1, but 2-7 string secret = RandomBase32String(16); string otpauth = "otpauth://totp/CoolApplication:someaccount?secret=" + secret + "&issuer=CoolApplication"; //to generate a QR code QRCodeGenerator qrGenerator = new QRCodeGenerator(); QRCodeData qrCodeData = qrGenerator.CreateQrCode(otpauth, QRCodeGenerator.ECCLevel.Q); QRCode qrCode = new QRCode(qrCodeData); Bitmap qrCodeImage = qrCode.GetGraphic(20); ImageConverter converter = new ImageConverter(); ViewBag.QRCode = (byte[])converter.ConvertTo(qrCodeImage, typeof(byte[])); Session["secret"] = secret; return(View()); }
public void Gener(string text) { //QRCodeGenerator qrGenerator = new QRCodeGenerator(); //QRCodeData qrCodeData = qrGenerator.CreateQrCode(text, QRCodeGenerator.ECCLevel.M); //QRCode qrCode = new QRCode(qrCodeData); //Bitmap qrCodeImage = qrCode.GetGraphic(8, Color.Black, Color.White, icon: ((Bitmap)Bitmap.FromFile(Server.MapPath("~/logo.jpg")))); QRCoder.PayloadGenerator.OneTimePassword generator = new QRCoder.PayloadGenerator.OneTimePassword() { Secret = "pwq6 5q55", Issuer = "Google", Label = "*****@*****.**", }; string payload = generator.ToString(); QRCodeGenerator qrGenerator = new QRCodeGenerator(); QRCodeData qrCodeData = qrGenerator.CreateQrCode(payload, QRCodeGenerator.ECCLevel.Q); QRCode qrCode = new QRCode(qrCodeData); var qrCodeImage = qrCode.GetGraphic(8); Response.ClearContent(); qrCodeImage.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);; }
public static void PlaceTimingPatterns(ref QRCodeData qrCode, ref List<Rectangle> blockedModules) { var size = qrCode.ModuleMatrix.Count; for (int i = 8; i < size - 8; i++) { if (i % 2 == 0) { qrCode.ModuleMatrix[6][i] = true; qrCode.ModuleMatrix[i][6] = true; } } blockedModules.AddRange(new Rectangle[]{ new Rectangle(6, 8, 1, size-16), new Rectangle(8, 6, size-16, 1) }); }
public static void AddQuietZone(ref QRCodeData qrCode) { bool[] quietLine = new bool[qrCode.ModuleMatrix.Count + 8]; for (int i = 0; i < quietLine.Length; i++) quietLine[i] = false; for (int i = 0; i < 4; i++) qrCode.ModuleMatrix.Insert(0, new BitArray(quietLine)); for (int i = 0; i < 4; i++) qrCode.ModuleMatrix.Add(new BitArray(quietLine)); for (int i = 4; i < qrCode.ModuleMatrix.Count - 4; i++) { bool[] quietPart = new bool[4] { false, false, false, false }; List<bool> tmpLine = new List<bool>(quietPart); foreach (bool module in qrCode.ModuleMatrix[i]) tmpLine.Add(module); tmpLine.AddRange(quietPart); qrCode.ModuleMatrix[i] = new BitArray(tmpLine.ToArray()); } }
public static void PlaceFormat(ref QRCodeData qrCode, string formatStr) { var size = qrCode.ModuleMatrix.Count; var fStr = new string(formatStr.Reverse().ToArray()); int[,] modules = new int[15, 4] { { 8, 0, size - 1, 8 }, { 8, 1, size - 2, 8 }, { 8, 2, size - 3, 8 }, { 8, 3, size - 4, 8 }, { 8, 4, size - 5, 8 }, { 8, 5, size - 6, 8 }, { 8, 7, size - 7, 8 }, { 8, 8, size - 8, 8 }, { 7, 8, 8, size - 7 }, { 5, 8, 8, size - 6 }, { 4, 8, 8, size - 5 }, { 3, 8, 8, size - 4 }, { 2, 8, 8, size - 3 }, { 1, 8, 8, size - 2 }, { 0, 8, 8, size - 1 } }; for (int i = 0; i < 15; i++) { var p1 = new Point(modules[i, 0], modules[i, 1]); var p2 = new Point(modules[i, 2], modules[i, 3]); qrCode.ModuleMatrix[p1.Y][p1.X] = fStr[i] == '1' ? true : false; qrCode.ModuleMatrix[p2.Y][p2.X] = fStr[i] == '1' ? true : false; } }
public static void PlaceVersion(ref QRCodeData qrCode, string versionStr) { var size = qrCode.ModuleMatrix.Count; var vStr = new string(versionStr.Reverse().ToArray()); for (int x = 0; x < 6; x++) { for (int y = 0; y < 3; y++) { qrCode.ModuleMatrix[y + size - 11][x] = vStr[x * 3 + y] == '1' ? true : false; qrCode.ModuleMatrix[x][y + size - 11] = vStr[x * 3 + y] == '1' ? true : false; } } }
public static void PlaceFinderPatterns(ref QRCodeData qrCode, ref List<Rectangle> blockedModules) { var size = qrCode.ModuleMatrix.Count; int[] locations = { 0, 0, size - 7, 0, 0, size - 7 }; for (int i = 0; i < 6; i = i + 2) { for (int x = 0; x < 7; x++) { for (int y = 0; y < 7; y++) { if (!(((x == 1 || x == 5) && y > 0 && y < 6) || (x > 0 && x < 6 && (y == 1 || y == 5)))) { qrCode.ModuleMatrix[y + locations[i + 1]][x + locations[i]] = true; } } } blockedModules.Add(new Rectangle(locations[i], locations[i + 1], 7, 7)); } }
public static void PlaceDataWords(ref QRCodeData qrCode, string data, ref List<Rectangle> blockedModules) { var size = qrCode.ModuleMatrix.Count; var up = true; var datawords = new Queue<bool>(); data.ToList().ForEach(x => datawords.Enqueue(x == '0' ? false : true)); for (int x = size - 1; x >= 0; x = x - 2) { if (x == 7 || x == 6) x = 5; for (int yMod = 1; yMod <= size; yMod++) { int y = 0; if (up) { y = size - yMod; if (datawords.Count > 0 && !IsBlocked(new Rectangle(x, y, 1, 1), blockedModules)) qrCode.ModuleMatrix[y][x] = datawords.Dequeue(); if (datawords.Count > 0 && x > 0 && !IsBlocked(new Rectangle(x - 1, y, 1, 1), blockedModules)) qrCode.ModuleMatrix[y][x - 1] = datawords.Dequeue(); } else { y = yMod - 1; if (datawords.Count > 0 && !IsBlocked(new Rectangle(x, y, 1, 1), blockedModules)) qrCode.ModuleMatrix[y][x] = datawords.Dequeue(); if (datawords.Count > 0 && x > 0 && !IsBlocked(new Rectangle(x - 1, y, 1, 1), blockedModules)) qrCode.ModuleMatrix[y][x - 1] = datawords.Dequeue(); } } up = !up; } }
public static void PlaceDarkModule(ref QRCodeData qrCode, int version, ref List<Rectangle> blockedModules) { qrCode.ModuleMatrix[4 * version + 9][8] = true; blockedModules.Add(new Rectangle(8, 4 * version + 9, 1, 1)); }
public static void PlaceAlignmentPatterns(ref QRCodeData qrCode, List<Point> alignmentPatternLocations, ref List<Rectangle> blockedModules) { foreach (var loc in alignmentPatternLocations) { var alignmentPatternRect = new Rectangle(loc.X, loc.Y, 5, 5); var blocked = false; foreach (var blockedRect in blockedModules) { if (Intersects(alignmentPatternRect, blockedRect)) { blocked = true; break; } } if (blocked) continue; for (int x = 0; x < 5; x++) { for (int y = 0; y < 5; y++) { if (y == 0 || y == 4 || x == 0 || x == 4 || (x == 2 && y == 2)) { qrCode.ModuleMatrix[loc.Y + y][loc.X + x] = true; } } } blockedModules.Add(new Rectangle(loc.X, loc.Y, 5, 5)); } }
public static int MaskCode(ref QRCodeData qrCode, int version, ref List<Rectangle> blockedModules) { var patternName = string.Empty; var patternScore = 0; var size = qrCode.ModuleMatrix.Count; foreach (var pattern in typeof(MaskPattern).GetMethods()) { if (pattern.Name.Length == 8 && pattern.Name.Substring(0, 7) == "Pattern") { QRCodeData qrTemp = new QRCodeData(version); for (int y = 0; y < size; y++) { for (int x = 0; x < size; x++) { qrTemp.ModuleMatrix[y][x] = qrCode.ModuleMatrix[y][x]; } } for (int x = 0; x < size; x++) { for (int y = 0; y < size; y++) { if (!IsBlocked(new Rectangle(x, y, 1, 1), blockedModules)) { qrTemp.ModuleMatrix[y][x] ^= (bool)pattern.Invoke(null, new object[] { x, y }); } } } var score = MaskPattern.Score(ref qrTemp); if (string.IsNullOrEmpty(patternName) || patternScore > score) { patternName = pattern.Name; patternScore = score; } } } var patterMethod = typeof(MaskPattern).GetMethods().First(x => x.Name == patternName); for (int x = 0; x < size; x++) { for (int y = 0; y < size; y++) { if (!IsBlocked(new Rectangle(x, y, 1, 1), blockedModules)) { qrCode.ModuleMatrix[y][x] ^= (bool)patterMethod.Invoke(null, new object[] { x, y }); } } } return Convert.ToInt32(patterMethod.Name.Substring(patterMethod.Name.Length - 1, 1)) - 1; }
public static int Score(ref QRCodeData qrCode) { var score = 0; var size = qrCode.ModuleMatrix.Count; //Penalty 1 for (int y = 0; y < size; y++) { var modInRow = 0; var modInColumn = 0; var lastValRow = qrCode.ModuleMatrix[y][0]; var lastValColumn = qrCode.ModuleMatrix[0][y]; for (int x = 0; x < size; x++) { if (qrCode.ModuleMatrix[y][x] == lastValRow) modInRow++; else modInRow = 1; if (modInRow == 5) score += 3; else if (modInRow > 5) score++; lastValRow = qrCode.ModuleMatrix[y][x]; if (qrCode.ModuleMatrix[x][y] == lastValColumn) modInColumn++; else modInColumn = 1; if (modInColumn == 5) score += 3; else if (modInColumn > 5) score++; lastValColumn = qrCode.ModuleMatrix[x][y]; } } //Penalty 2 for (int y = 0; y < size - 1; y++) { for (int x = 0; x < size - 1; x++) { if (qrCode.ModuleMatrix[y][x] == qrCode.ModuleMatrix[y][x + 1] && qrCode.ModuleMatrix[y][x] == qrCode.ModuleMatrix[y + 1][x] && qrCode.ModuleMatrix[y][x] == qrCode.ModuleMatrix[y + 1][x + 1]) score += 3; } } //Penalty 3 for (int y = 0; y < size; y++) { for (int x = 0; x < size - 10; x++) { if ((qrCode.ModuleMatrix[y][x] && !qrCode.ModuleMatrix[y][x + 1] && qrCode.ModuleMatrix[y][x + 2] && qrCode.ModuleMatrix[y][x + 3] && qrCode.ModuleMatrix[y][x + 4] && !qrCode.ModuleMatrix[y][x + 5] && qrCode.ModuleMatrix[y][x + 6] && !qrCode.ModuleMatrix[y][x + 7] && !qrCode.ModuleMatrix[y][x + 8] && !qrCode.ModuleMatrix[y][x + 9] && !qrCode.ModuleMatrix[y][x + 10]) || (!qrCode.ModuleMatrix[y][x] && !qrCode.ModuleMatrix[y][x + 1] && !qrCode.ModuleMatrix[y][x + 2] && !qrCode.ModuleMatrix[y][x + 3] && qrCode.ModuleMatrix[y][x + 4] && !qrCode.ModuleMatrix[y][x + 5] && qrCode.ModuleMatrix[y][x + 6] && qrCode.ModuleMatrix[y][x + 7] && qrCode.ModuleMatrix[y][x + 8] && !qrCode.ModuleMatrix[y][x + 9] && qrCode.ModuleMatrix[y][x + 10])) { score += 40; } if ((qrCode.ModuleMatrix[x][y] && !qrCode.ModuleMatrix[x + 1][y] && qrCode.ModuleMatrix[x + 2][y] && qrCode.ModuleMatrix[x + 3][y] && qrCode.ModuleMatrix[x + 4][y] && !qrCode.ModuleMatrix[x + 5][y] && qrCode.ModuleMatrix[x + 6][y] && !qrCode.ModuleMatrix[x + 7][y] && !qrCode.ModuleMatrix[x + 8][y] && !qrCode.ModuleMatrix[x + 9][y] && !qrCode.ModuleMatrix[x + 10][y]) || (!qrCode.ModuleMatrix[x][x] && !qrCode.ModuleMatrix[x + 1][y] && !qrCode.ModuleMatrix[x + 2][y] && !qrCode.ModuleMatrix[x + 3][y] && qrCode.ModuleMatrix[x + 4][y] && !qrCode.ModuleMatrix[x + 5][y] && qrCode.ModuleMatrix[x + 6][y] && qrCode.ModuleMatrix[x + 7][y] && qrCode.ModuleMatrix[x + 8][y] && !qrCode.ModuleMatrix[x + 9][y] && qrCode.ModuleMatrix[x + 10][y])) { score += 40; } } } //Penalty 4 var blackModules = 0; foreach (var row in qrCode.ModuleMatrix) foreach (bool bit in row) if (bit) blackModules++; var percent = (blackModules / (qrCode.ModuleMatrix.Count * qrCode.ModuleMatrix.Count)) * 100; if (percent % 5 == 0) score += Math.Min((Math.Abs(percent - 55) / 5), (Math.Abs(percent - 45) / 5)) * 10; else score += Math.Min((Math.Abs((int)Math.Floor((decimal)percent / 5) - 50) / 5), (Math.Abs(((int)Math.Floor((decimal)percent / 5) + 5) - 50) / 5)) * 10; return score; }
public QRCodeData CreateQrCode(string plainText, ECCLevel eccLevel, bool utf8BOM = false) { var encoding = GetEncodingFromPlaintext(plainText); var codedText = PlainTextToBinary(plainText, encoding, utf8BOM); var dataInputLength = GetDataLength(encoding, plainText, codedText); var version = GetVersion(dataInputLength, encoding, eccLevel); var modeIndicator = DecToBin((int)encoding, 4); var countIndicator = DecToBin(dataInputLength, GetCountIndicatorLength(version, encoding)); var bitString = modeIndicator + countIndicator; bitString += codedText; //Fill up data code word var eccInfo = capacityECCTable.Single(x => x.Version == version && x.ErrorCorrectionLevel.Equals(eccLevel)); var dataLength = eccInfo.TotalDataCodewords * 8; var lengthDiff = dataLength - bitString.Length; if (lengthDiff > 0) bitString += new string('0', Math.Min(lengthDiff, 4)); if ((bitString.Length % 8) != 0) bitString += new string('0', 8 - (bitString.Length % 8)); while (bitString.Length < dataLength) bitString += "1110110000010001"; if (bitString.Length > dataLength) bitString = bitString.Substring(0, dataLength); //Calculate error correction words List<CodewordBlock> codeWordWithECC = new List<CodewordBlock>(); for (int i = 0; i < eccInfo.BlocksInGroup1; i++) { var bitStr = bitString.Substring(i * eccInfo.CodewordsInGroup1 * 8, eccInfo.CodewordsInGroup1 * 8); codeWordWithECC.Add(new CodewordBlock() { BitString = bitStr, BlockNumber = i + 1, GroupNumber = 1, CodeWords = BinaryStringToBitBlockList(bitStr), ECCWords = CalculateECCWords(bitStr, eccInfo) }); } bitString = bitString.Substring(eccInfo.BlocksInGroup1 * eccInfo.CodewordsInGroup1 * 8); for (int i = 0; i < eccInfo.BlocksInGroup2; i++) { var bitStr = bitString.Substring(i * eccInfo.CodewordsInGroup2 * 8, eccInfo.CodewordsInGroup2 * 8); codeWordWithECC.Add(new CodewordBlock() { BitString = bitStr, BlockNumber = i + 1, GroupNumber = 2, CodeWords = BinaryStringToBitBlockList(bitStr), ECCWords = CalculateECCWords(bitStr, eccInfo) }); } //Interleave code words StringBuilder interleavedWordsSb = new StringBuilder(); for (int i = 0; i < Math.Max(eccInfo.CodewordsInGroup1, eccInfo.CodewordsInGroup2); i++) { foreach (var codeBlock in codeWordWithECC) if (codeBlock.CodeWords.Count > i) interleavedWordsSb.Append(codeBlock.CodeWords[i]); } for (int i = 0; i < eccInfo.ECCPerBlock; i++) { foreach (var codeBlock in codeWordWithECC) if (codeBlock.ECCWords.Count > i) interleavedWordsSb.Append(codeBlock.ECCWords[i]); } interleavedWordsSb.Append(new string('0', remainderBits[version - 1])); var interleavedData = interleavedWordsSb.ToString(); //Place interleaved data on module matrix QRCodeData qr = new QRCodeData(version); List<Rectangle> blockedModules = new List<Rectangle>(); ModulePlacer.PlaceFinderPatterns(ref qr, ref blockedModules); ModulePlacer.ReserveSeperatorAreas(qr.ModuleMatrix.Count, ref blockedModules); ModulePlacer.PlaceAlignmentPatterns(ref qr, alignmentPatternTable.Where(x => x.Version == version).Select(x => x.PatternPositions).First(), ref blockedModules); ModulePlacer.PlaceTimingPatterns(ref qr, ref blockedModules); ModulePlacer.PlaceDarkModule(ref qr, version, ref blockedModules); ModulePlacer.ReserveVersionAreas(qr.ModuleMatrix.Count, version, ref blockedModules); ModulePlacer.PlaceDataWords(ref qr, interleavedData, ref blockedModules); var maskVersion = ModulePlacer.MaskCode(ref qr, version, ref blockedModules); var formatStr = GetFormatString(eccLevel, maskVersion); ModulePlacer.PlaceFormat(ref qr, formatStr); if (version >= 7) { var versionString = GetVersionString(version); ModulePlacer.PlaceVersion(ref qr, versionString); } ModulePlacer.AddQuietZone(ref qr); return qr; }