public void SetInfo(QRInfo info, bool online) { if (online) { offline.Visibility = ViewStates.Gone; } else { offline.Visibility = ViewStates.Visible; } switch (info.PasaporteColor) { case "Verde": label1.Text = GetString(Resource.String.title_pasar); label2.Text = GetString(Resource.String.subtitle_pasar); image.SetImageResource(Resource.Drawable.ok); root.SetBackgroundResource(Resource.Color.colorStateGreen); break; case "Rojo": label1.Text = GetString(Resource.String.title_nopasar); label2.Text = GetString(Resource.String.subtitle_nopasar); image.SetImageResource(Resource.Drawable.block); root.SetBackgroundResource(Resource.Color.colorStateRed); break; case "Gris": label1.Text = GetString(Resource.String.title_nopasar); label2.Text = GetString(Resource.String.subtitle_caducado); image.SetImageResource(Resource.Drawable.block); root.SetBackgroundResource(Resource.Color.colorStateCaducado); break; } }
public async void SetSacnnerResult(string text) { ConfigureLanguage(); if (text != null) { try { //var info = JsonConvert.DeserializeObject<QRInfo>(text); var encripted = EncryptUtils.Desencriptar(text); var values = encripted.Split(';'); var info = new QRInfo() { IdEmpleado = Convert.ToInt32(values[0]), PasaporteColor = values[1], }; long date = Convert.ToInt64(values[2]); if (date >= 0) { info.FechaExpiracion = new DateTime(date); } Locator.Current.GetService <AppSession>().QRInfo = info; navigator.GoResult(); }catch (Exception e) { await Task.Delay(500); View.ShowDialog("qr_no_valid", "msg_ok", null); } } }
private void QRCodeTrackingService_QRCodeFound(object sender, QRInfo codeReceived) { if (lastSeenCode?.Data != codeReceived.Data) { displayText.text = $"code observed: {codeReceived.Data}"; if (confirmSound.clip != null) { confirmSound.Play(); } } lastSeenCode = codeReceived; }
private void Update() { if (lastSeenCode == null) { return; } if (Math.Abs( (lastSeenCode.LastDetectedTime.UtcDateTime - DateTimeOffset.UtcNow).TotalMilliseconds) > qrObservationTimeOut) { lastSeenCode = null; displayText.text = string.Empty; } }
public string CreateQRString(QRInfo qrData) { var EMVCo = "000201"; var applicationID = "0016A000000677010112"; var BillerID = $"{qrData.TaxID}{qrData.Suffix}"; var defaultBiller = "00000000000001"; var billPaymentBillerID = !String.IsNullOrEmpty(BillerID) ? $"01{fieldIsNull(BillerID)}" : $"01{fieldIsNull(defaultBiller)}"; var reference1 = $"02{fieldIsNull(qrData.Ref1)}"; var reference2 = $"03{fieldIsNull(qrData.Ref2)}"; var transactionAmount = ""; if (!String.IsNullOrEmpty(qrData.Amount)) { var amount = String.Format("{0:0.00}", Convert.ToDouble(qrData.Amount)); transactionAmount = $"54{len(amount)}{amount}"; } else { transactionAmount = ""; } var transactionCurrency = !String.IsNullOrEmpty(qrData.Currency) ? $"5303{qrData.Currency}" : $"5303764"; var countryCode = !String.IsNullOrEmpty(qrData.CountryCode) ? $"5802{(qrData.CountryCode).ToUpper()}" : "5802TH"; var merchantName = !String.IsNullOrEmpty(qrData.MerchantName) ? $"59{fieldIsNull(qrData.MerchantName)}" : ""; var terminalNumber = !String.IsNullOrEmpty(qrData.TerminalNo) ? $"62{fieldIsNull(qrData.TerminalNo)}" : ""; var qrUse = qrData.PointOfInherite == "No" ? "010212" : "010211"; var billPayment = $"{applicationID}{billPaymentBillerID}{reference1}{reference2}"; var billPaymentInfo = $"30{fieldIsNull(billPayment)}"; var qrcode = new StringBuilder(); qrcode.Append(EMVCo) .Append(qrUse) .Append(billPaymentInfo) .Append(transactionCurrency) .Append(transactionAmount) .Append(countryCode) .Append(merchantName) .Append(terminalNumber) .Append("6304"); var payload = qrcode.ToString().Select(x => Convert.ToByte(x)).ToArray(); var crc = new CRC16().ComputeCheckSum(payload); var crc16 = crc.ToString("X").PadLeft(4, '0'); qrcode.Append(crc16); return(qrcode.ToString()); }
public async Task YesClicked() { var info = new QRInfo() { IdEmpleado = user.IdEmpleado, PasaporteColor = "Rojo", Manual = true }; Locator.Current.GetService <AppSession>().QRInfo = info; View.ShowLoading(); var response = await generateManualUseCase.Execute(user.IdEmpleado, false); View.HideLoading(); if (response.ErrorCode > 0) { View.ShowDialog(response.Message, "msg_ok", null); } else { navigator.GoResult(); } }
public List <QRInfo> CusQrInfo(int CustId) { List <Routes> HubList = new Routes().RouteList(); List <QRInfo> CusQrInfoTemp = new List <QRInfo>(); List <Orders> CustOrderList = Orders.List.FindAll(x => x.CID == CustId); for (int i = 0; i < CustOrderList.Count; i++) { QRInfo TempObj = new QRInfo(); TempObj.CustID = CustOrderList[i].CID; TempObj.OrderID = CustOrderList[i].OID; var tifinno = Regex.Split(CustOrderList[i].TifinIds, ",").Where(x => x != string.Empty).ToArray(); TempObj.TifinCodes = string.Join(",", tifinno); TempObj.OrderType = CustOrderList[i].Type; TempObj.HubName = ""; Routes ObjHub = HubList.Find(x => x.HubID == CustOrderList[i].HubId); if (ObjHub != null) { TempObj.HubName = ObjHub.HubName + "( " + ObjHub.MobileNo.ToString() + " )"; } CusQrInfoTemp.Add(TempObj); } return(CusQrInfoTemp); }
private void generate_Btn_Click(object sender, EventArgs e) { var encodeModel = new QRInfo { TaxID = txtTaxID.Text, Suffix = txtSuffix.Text, Ref1 = txtRef1.Text, Ref2 = txtRef2.Text, Amount = txtAmount.Text, Currency = txtCurrency.Text, CountryCode = txtCountryCode.Text, MerchantName = txtMerchantName.Text, TerminalNo = txtTerminalNumber.Text, PointOfInherite = cbUsese.Text }; var encode = new QRService(); string qrString = encode.CreateQRString(encodeModel); ID.Text = qrString; var imageQR = PromptPayQR.PromptPayQR.QRCodeImage(qrString); QRBox.Image = imageQR; }
unsafe static void Main(string[] args) { int version = 5; int cellSize = 6; byte[] data1 = Encoding.UTF8.GetBytes("BAKA"); var N = QRInfo.GetN(version); var maxError = QRInfo.GetMaxErrorAllowBytes(version, ECCLevel.L); var template = new Bitmap(@"Z:\2.png"); var pixels = QRCodeMagician.GetImagePixel(version, template, cellSize, cellSize / 3); var qr = QRCodeMagician.ImageArt(DataMode.Alphanumeric, version, ECCLevel.L, MaskVersion.Version100, data1, pixels, 4); var bitmap = new Bitmap((N + 2) * cellSize, (N + 2) * cellSize); // var bitmapData = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.WriteOnly, PixelFormat.Format32bppRgb); var fixedBlackBrush = Brushes.Black; var fixedWhiteBrush = Brushes.White; var blackBrush = Brushes.Black; var whiteBrush = Brushes.White; var halftone = cellSize / 3; using (var g = Graphics.FromImage(bitmap)) { g.Clear(Color.White); g.DrawImage(new Bitmap(@"Z:\1.png"), new Rectangle(cellSize, cellSize, N * cellSize, N * cellSize)); for (int x = 0; x < N; x++) { for (int y = 0; y < N; y++) { var drawX = x + 1; var drawY = y + 1; if (qr[x, y].Type == QRValueType.TimingPatterns) { continue; } //if (qr[x, y].Type == QRValueType.Fixed || qr[x, y].Type == QRValueType.TimingPatterns || qr[x, y].Type == QRValueType.Format || qr[x, y].Type == QRValueType.Version) { if (qr[x, y].Type == QRValueType.Fixed || qr[x, y].Type == QRValueType.TimingPatterns) { if (qr[x, y].Value) { g.FillRectangle(fixedBlackBrush, new Rectangle(drawX * cellSize, drawY * cellSize, cellSize, cellSize)); } else { // g.FillRectangle(fixedWhiteBrush, new Rectangle(drawX * cellSize, drawY * cellSize, cellSize, cellSize)); } //if (qr[x, y].Value) { // g.FillRectangle(blackBrush, new Rectangle(drawX * cellSize + halftone, drawY * cellSize + halftone, halftone, halftone)); //} else { // g.FillRectangle(whiteBrush, new Rectangle(drawX * cellSize + halftone, drawY * cellSize + halftone, halftone, halftone)); //} } else if (!pixels[x, y].HasFlag(ImagePixel.Stable) || qr[x, y].Value != pixels[x, y].HasFlag(ImagePixel.Black)) { if (qr[x, y].Value) { g.FillRectangle(blackBrush, new Rectangle(drawX * cellSize + halftone, drawY * cellSize + halftone, halftone, halftone)); } else { g.FillRectangle(whiteBrush, new Rectangle(drawX * cellSize + halftone, drawY * cellSize + halftone, halftone, halftone)); } //if (qr[x, y].Value) { // g.FillRectangle(fixedBlackBrush, new Rectangle(drawX * cellSize, drawY * cellSize, cellSize, cellSize)); //} else { // g.FillRectangle(fixedWhiteBrush, new Rectangle(drawX * cellSize, drawY * cellSize, cellSize, cellSize)); //} } } } } bitmap.Save(@"Z:\out.png"); }
/// <summary> /// Returns a string with extended barcode info. /// </summary> /// <param name="barcodeInfo">A barcode info.</param> /// <param name="textEncodingName">A text encoding name.</param> /// <returns> /// A string with extended barcode info. /// </returns> internal string GetExtendedBarcodeInfoString(IBarcodeInfo barcodeInfo, string textEncodingName) { // if barcode info is empty if (barcodeInfo == null) { return(string.Empty); } IBarcodeInfo info; if (barcodeInfo is BarcodeSubsetInfo) { info = ((BarcodeSubsetInfo)barcodeInfo).BaseBarcodeInfo; } else { info = barcodeInfo; } StringBuilder extendedInfo = new StringBuilder(); // append barcode value try { extendedInfo.AppendLine(Utils.GetEncodedBarcodeValue(barcodeInfo, textEncodingName)); } catch (NotSupportedException) { extendedInfo.AppendLine(Utils.GetEncodedBarcodeValue(barcodeInfo, "-1")); } extendedInfo.AppendLine(); extendedInfo.AppendLine(Resources.GetString(Resource.String.metadata_message)); extendedInfo.AppendLine(); // if barcode is 2D barcode if (info is BarcodeInfo2D) { // get 2D barcode info BarcodeInfo2D info2D = (BarcodeInfo2D)info; // get matrix size extendedInfo.AppendLine(string.Format(Resources.GetString(Resource.String.matrix_size_message), info2D.MatrixWidth, info2D.MatrixHeight)); // get cell size extendedInfo.AppendLine(string.Format(CultureInfo.InvariantCulture, Resources.GetString(Resource.String.cell_size_message), info2D.CellWidth, info2D.CellHeight)); if (info2D.IsMirrored) { extendedInfo.AppendLine(string.Format(Resources.GetString(Resource.String.mirrored_message), info2D.IsMirrored)); } } // if barcode is 1D barcode if (info is BarcodeInfo1D) { // get 1D barcode info BarcodeInfo1D info1D = (BarcodeInfo1D)info; // get narrow bar count extendedInfo.AppendLine(string.Format(Resources.GetString(Resource.String.narrow_bar_count_message), info1D.NarrowBarCount)); // get narrow bar size extendedInfo.AppendLine(string.Format(CultureInfo.InvariantCulture, Resources.GetString(Resource.String.narrow_bar_size_message), info1D.NarrowBarSize)); } if (info.SymbolComponents != null) { extendedInfo.AppendLine(string.Format(Resources.GetString(Resource.String.symbol_component_count_message), info.SymbolComponents.Length)); } if (info is StructuredAppendBarcodeInfo) { extendedInfo.AppendLine(Resources.GetString(Resource.String.reconstructed_message)); } else { switch (info.BarcodeType) { // if barcode is PDF417 case BarcodeType.PDF417: case BarcodeType.PDF417Compact: // get PDF417 barcode info PDF417Info pdf417Info = (PDF417Info)info; // get rows count extendedInfo.AppendLine(string.Format(Resources.GetString(Resource.String.rows_count_message), pdf417Info.RowsCount)); // get error correction level extendedInfo.AppendLine(string.Format(Resources.GetString(Resource.String.error_correction_level_message), Utils.PDF417ErrorCorrectionLevelToString(pdf417Info.ErrorCorrectionLevel))); break; // if barcode is MicroPDF417 case BarcodeType.MicroPDF417: // get MicroPDF417 barcode info MicroPDF417Info microPdf417Info = (MicroPDF417Info)info; // get symbol type extendedInfo.AppendLine(string.Format(Resources.GetString(Resource.String.symbol_type_message), Utils.MicroPDF417SymbolTypeToString(microPdf417Info.SymbolType))); break; // if barcode if DataMatrix case BarcodeType.DataMatrix: // get DataMatrix barcode info DataMatrixInfo dataMatrixInfo = (DataMatrixInfo)info; // get symbol type extendedInfo.AppendLine(string.Format(Resources.GetString(Resource.String.symbol_type_message), Utils.DataMatrixSymbolTypeToString(dataMatrixInfo.Symbol.SymbolType))); break; // if barcode is QR case BarcodeType.MicroQR: case BarcodeType.QR: // get QR barcode info QRInfo qrInfo = (QRInfo)info; // get symbol version extendedInfo.AppendLine(string.Format(Resources.GetString(Resource.String.symbol_version_message), Utils.QRSymbolVersionToString(qrInfo.Symbol.Version))); // get error correction level extendedInfo.AppendLine(string.Format(Resources.GetString(Resource.String.error_correction_level_message), Utils.QRErrorCorrectionLevelToString(qrInfo.ErrorCorrectionLevel))); break; // if barcode is Aztec case BarcodeType.Aztec: // get Aztec barcode info AztecInfo aztecInfo = (AztecInfo)info; // get symbol type extendedInfo.AppendLine(string.Format(Resources.GetString(Resource.String.symbol_type_message), Utils.AztecSymbolTypeToString(aztecInfo.Symbol.SymbolType))); // get data layers extendedInfo.AppendLine(string.Format(Resources.GetString(Resource.String.data_layers_message), aztecInfo.Symbol.DataLayers)); // get error correction data extendedInfo.AppendLine(string.Format(Resources.GetString(Resource.String.error_correction_data_message), aztecInfo.Symbol.ErrorCorrectionData.ToString("F3"))); break; // if barcode is HanXin case BarcodeType.HanXinCode: // get HanXin barcode info HanXinCodeInfo hanXinInfo = (HanXinCodeInfo)info; // get symbol version extendedInfo.AppendLine(string.Format(Resources.GetString(Resource.String.symbol_version_message), Utils.HanXinCodeSymbolVersionToString(hanXinInfo.Symbol.Version))); // get error correction level extendedInfo.AppendLine(string.Format(Resources.GetString(Resource.String.error_correction_level_message), Utils.HanXinCodeErrorCorrectionLevelToString(hanXinInfo.Symbol.ErrorCorrectionLevel))); break; // if barcode is MaxiCode case BarcodeType.MaxiCode: // get MaxiCode barcode info MaxiCodeInfo maxiCodeInfo = (MaxiCodeInfo)info; // get encoding mode extendedInfo.AppendLine(string.Format(Resources.GetString(Resource.String.encoding_mode_message), Utils.MaxiCodeEncodingModeToString(maxiCodeInfo.EncodingMode))); break; // if barcode is RSS14 case BarcodeType.RSS14: case BarcodeType.RSS14Stacked: case BarcodeType.RSSExpanded: case BarcodeType.RSSExpandedStacked: case BarcodeType.RSSLimited: // get RSS barcode info RSSInfo rssInfo = (RSSInfo)info; // get segments count extendedInfo.AppendLine(string.Format(Resources.GetString(Resource.String.segments_count_message), rssInfo.SegmentsCount)); // get rows count extendedInfo.AppendLine(string.Format(Resources.GetString(Resource.String.rows_count_message), rssInfo.RowsCount)); // get segments in row extendedInfo.AppendLine(string.Format(Resources.GetString(Resource.String.segments_in_row_message), rssInfo.SegmentsInRow)); // get linkage flag extendedInfo.AppendLine(string.Format(Resources.GetString(Resource.String.linkage_flag_message), rssInfo.LinkageFlag)); break; // if barcode is UPCE case BarcodeType.UPCE: // get UPCE barcode info UPCEANInfo upcEANInfo = (UPCEANInfo)info; // get UPCE value extendedInfo.AppendLine(string.Format(Resources.GetString(Resource.String.upce_value_message), upcEANInfo.UPCEValue)); break; } } extendedInfo.AppendLine(string.Format(CultureInfo.InvariantCulture, Resources.GetString(Resource.String.recognition_quality_message), info.ReadingQuality)); return(extendedInfo.ToString()); }
private async Task GetData() { info = Locator.Current.GetService <AppSession>().QRInfo; online = true; View.ShowLoading(); var response = await getSecurityPassportUseCase.Execute(info.IdEmpleado); View.HideLoading(); dict = new Dictionary <string, string>(); dict["manual"] = info.Manual.ToString(); if (response.ErrorCode > 0) { online = false; if (info.Manual) { View.ShowDialog(response.Message, "msg_ok", () => navigator.GoBack()); return; } dict["online"] = "false"; } else { info = new QRInfo() { IdEmpleado = response.Data.IdEmpleado, FechaExpiracion = response.Data.FechaExpiracion, PasaporteColor = response.Data.ColorPasaporte }; dict["online"] = "true"; } var now = DateTime.Now; if (!info.FechaExpiracion.HasValue) { info.PasaporteColor = "Gris"; } else { var dateCompare = DateTime.Compare(info.FechaExpiracion.Value, now); if (dateCompare < 0) //ha caducado, la fecha de expiración es anterior a la fecha actual { info.PasaporteColor = "Gris"; } } dict["color"] = info.PasaporteColor; string hashCode = SHA1(info.IdEmpleado.ToString()); dict["empleado"] = hashCode; var loc = Locator.Current.GetService <AppSession>().Location; if (loc != null) { dict["pais"] = loc.Pais; dict["ciudad"] = loc.Ciudad; dict["centro"] = loc.Name; dict["centroId"] = loc.IdLocation.ToString(); dict["centroExtra"] = loc.Extra != null?loc.Extra:""; } if (info.PasaporteColor.Equals("Verde")) { View.AskTemperature(); } else { dict["temperatura"] = "NA"; Analytics.TrackEvent("SeguridadPasaporte", dict); View.SetInfo(info, online); SendInfo(); } }
private void btnCreateQR_Click(object sender, EventArgs e) { byte[] data = Encoding.UTF8.GetBytes(txtData.Text); int version = (int)numVersion.Value; MaskVersion maskVersion = (MaskVersion)cmbMask.SelectedIndex; int cellSize = (int)numCellSize.Value; int halftone = (int)numHalftone.Value; int maxError = (int)numMaxError.Value; int blackThreshold = (int)numBlackThreshold.Value; int whiteThreshold = (int)numWhiteThreshold.Value; int deviation = (int)numDeviation.Value; dataMode = dataMode ?? DataEncoder.GuessMode(data); if (version == 0) { version = DataEncoder.GuessVersion(data.Length, eccLevel, dataMode.Value); } var template = picTemplate.Image as Bitmap; var pixels = QRCodeMagician.GetImagePixel(version, template, cellSize, halftone, deviation); var qr = QRCodeMagician.ImageArt(dataMode.Value, version, eccLevel, maskVersion, data, pixels, maxError); int N = qr.N; var fixedBlackBrush = Brushes.Black; var fixedWhiteBrush = Brushes.White; var blackBrush = Brushes.Black; var whiteBrush = Brushes.White; int margin = halftone; if (halftone <= 0 || halftone >= cellSize) { halftone = cellSize; margin = 0; } var bitmap = new Bitmap((N + 2) * cellSize, (N + 2) * cellSize); using (var g = Graphics.FromImage(bitmap)) { g.Clear(Color.White); g.DrawImage(template, new Rectangle(cellSize, cellSize, N * cellSize, N * cellSize)); for (int x = 0; x < N; x++) { for (int y = 0; y < N; y++) { var drawX = x + 1; var drawY = y + 1; if (margin == 0) { if (qr[x, y].Value) { g.FillRectangle(blackBrush, new Rectangle(drawX * cellSize, drawY * cellSize, halftone, halftone)); } else { g.FillRectangle(whiteBrush, new Rectangle(drawX * cellSize, drawY * cellSize, halftone, halftone)); } continue; } if (qr[x, y].Type == QRValueType.TimingPatterns) { continue; } //if (qr[x, y].Type == QRValueType.Fixed || qr[x, y].Type == QRValueType.TimingPatterns || qr[x, y].Type == QRValueType.Format || qr[x, y].Type == QRValueType.Version) { if (qr[x, y].Type == QRValueType.Fixed || qr[x, y].Type == QRValueType.TimingPatterns) { if (qr[x, y].Value) { g.FillRectangle(fixedBlackBrush, new Rectangle(drawX * cellSize, drawY * cellSize, cellSize, cellSize)); } else { g.FillRectangle(fixedWhiteBrush, new Rectangle(drawX * cellSize, drawY * cellSize, cellSize, cellSize)); } } else if (!pixels[x, y].HasFlag(ImagePixel.Stable) || qr[x, y].Value != pixels[x, y].HasFlag(ImagePixel.Black)) { var brush = qr[x, y].Value ? blackBrush : whiteBrush; g.FillRectangle(brush, new Rectangle(drawX * cellSize + halftone, drawY * cellSize + halftone, halftone, halftone)); } } } } var bitmap2 = new Bitmap((N + 2) * cellSize, (N + 2) * cellSize); using (var g = Graphics.FromImage(bitmap2)) { g.Clear(Color.White); g.DrawImage(template, new Rectangle(cellSize, cellSize, N * cellSize, N * cellSize)); for (int x = 0; x < N; x++) { for (int y = 0; y < N; y++) { var drawX = x + 1; var drawY = y + 1; if (margin == 0) { if (qr[x, y].Value) { g.FillRectangle(blackBrush, new Rectangle(drawX * cellSize, drawY * cellSize, halftone, halftone)); } else { g.FillRectangle(whiteBrush, new Rectangle(drawX * cellSize, drawY * cellSize, halftone, halftone)); } continue; } if (qr[x, y].Type == QRValueType.TimingPatterns) { continue; } //if (qr[x, y].Type == QRValueType.Fixed || qr[x, y].Type == QRValueType.TimingPatterns || qr[x, y].Type == QRValueType.Format || qr[x, y].Type == QRValueType.Version) { if (qr[x, y].Type == QRValueType.Fixed || qr[x, y].Type == QRValueType.TimingPatterns) { if (qr[x, y].Value) { g.FillRectangle(fixedBlackBrush, new Rectangle(drawX * cellSize, drawY * cellSize, cellSize, cellSize)); } else { g.FillRectangle(fixedWhiteBrush, new Rectangle(drawX * cellSize, drawY * cellSize, cellSize, cellSize)); } } else { if (qr[x, y].Value) { g.FillRectangle(blackBrush, new Rectangle(drawX * cellSize + halftone, drawY * cellSize + halftone, halftone, halftone)); } else { g.FillRectangle(whiteBrush, new Rectangle(drawX * cellSize + halftone, drawY * cellSize + halftone, halftone, halftone)); } } } } } var(binarizerBtimap, pixels2) = QRCodeMagician.GetBinarizer(version, template, cellSize, halftone, deviation); qr = QRCodeMagician.ImageArt(dataMode.Value, version, eccLevel, maskVersion, data, pixels2, maxError); var bitmap3 = new Bitmap((N + 2) * cellSize, (N + 2) * cellSize); using (var g = Graphics.FromImage(bitmap3)) { g.Clear(Color.White); g.DrawImage((binarizerBtimap), new Rectangle(cellSize, cellSize, N * cellSize, N * cellSize)); for (int x = 0; x < N; x++) { for (int y = 0; y < N; y++) { var drawX = x + 1; var drawY = y + 1; if (margin == 0) { if (qr[x, y].Value) { g.FillRectangle(blackBrush, new Rectangle(drawX * cellSize, drawY * cellSize, halftone, halftone)); } else { g.FillRectangle(whiteBrush, new Rectangle(drawX * cellSize, drawY * cellSize, halftone, halftone)); } continue; } // if (qr[x, y].Type == QRValueType.TimingPatterns) continue; if (qr[x, y].Type == QRValueType.Fixed || qr[x, y].Type == QRValueType.TimingPatterns) { if (qr[x, y].Value) { g.FillRectangle(fixedBlackBrush, new Rectangle(drawX * cellSize, drawY * cellSize, cellSize, cellSize)); } else { g.FillRectangle(fixedWhiteBrush, new Rectangle(drawX * cellSize, drawY * cellSize, cellSize, cellSize)); } } else if (!pixels2[x, y].HasFlag(ImagePixel.Stable) || qr[x, y].Value != pixels2[x, y].HasFlag(ImagePixel.Black)) { if (qr[x, y].Value) { g.FillRectangle(blackBrush, new Rectangle(drawX * cellSize + halftone, drawY * cellSize + halftone, halftone, halftone)); } else { g.FillRectangle(whiteBrush, new Rectangle(drawX * cellSize + halftone, drawY * cellSize + halftone, halftone, halftone)); } } } } } WindowManager <FrmView> .Get().Text = $"最大允许错误:{qr.MaxErrorAllowBytes}×{QRInfo.GetEccInfo(version, eccLevel).BlocksInGroup1 + QRInfo.GetEccInfo(version, eccLevel).BlocksInGroup2}"; WindowManager <FrmView> .Get().picView.Image = bitmap; WindowManager <FrmView> .Get().picView2.Image = bitmap2; WindowManager <FrmView> .Get().picView3.Image = HybridBinarizer.BinarizerBitmap(bitmap); WindowManager <FrmView> .Get().picView4.Image = bitmap3; WindowManager <FrmView> .Get().Show(); }
static void Main(string[] args) { //var g = new GF.XPolynom(GF.FromExponent(0), GF.FromExponent(0)); //var eccNum = 2; //for (int i = 1; i < eccNum; i++) { // g *= new GF.XPolynom(GF.FromExponent(i), GF.FromExponent(0)); //} //var r = new GF.XPolynom[8 * eccNum]; //for (int i = 0; i < 8 * eccNum; i++) { // var msg = new GF.XPolynom(eccNum * 2 + 1); // // msg[eccNum * 2] = GF.FromPolynom(0x55); // msg[eccNum * 2 - 1 - i / 8] = GF.FromPolynom(1 << (7 - i % 8)); // r[i] = msg % g; // System.Console.WriteLine(Convert.ToString(r[i][0].Polynom, 2).PadLeft(8, '0') + "," + Convert.ToString(r[i][1].Polynom, 2).PadLeft(8, '0')); //} //System.Console.WriteLine(); //{ // var msg = new GF.XPolynom(eccNum * 2 + 1); // // msg[eccNum * 2] = GF.FromPolynom(0x55); // // msg[eccNum * 2 - 1] = GF.FromPolynom(0b11000000); // //var r0 = msg % g; // //System.Console.WriteLine(Convert.ToString(r0[0].Polynom, 2).PadLeft(8, '0') + "," + Convert.ToString(r0[1].Polynom, 2).PadLeft(8, '0')); // msg[eccNum * 2 - 1] = GF.FromPolynom(0b10000000); // msg[eccNum * 2 - 2] = GF.FromPolynom(0b00000001); // var r0 = msg % g; // System.Console.WriteLine(Convert.ToString(r0[0].Polynom, 2).PadLeft(8, '0') + "," + Convert.ToString(r0[1].Polynom, 2).PadLeft(8, '0')); //} //byte[] data1 = Encoding.UTF8.GetBytes("17689480023"); //byte[] data2 = Encoding.UTF8.GetBytes("15059723108"); //var (qr1, qr2, swap) = QRCodeMagician.CreateObfuscatedQRCode(data1, data2); //if (qr1 == null) { System.Console.WriteLine("失败"); return; } //Save(@"Z:\qr1.png", qr1, null, 5); //Save(@"Z:\qr2.png", qr2, null, 5); //Save(@"Z:\qr12.png", qr1, qr2, 5); //Save(@"Z:\qr21.png", qr2, qr1, 5); //SaveObfuscated(@"Z:\qr.png", qr1, qr2, 5); //System.Console.WriteLine("成功"); //var qr = new QRCode(data1); //Save(@"Z:\qr.png", qr, null, 5); //var r1 = QRDataEncoder.CalculateECCWords(new byte[] { 1,3,2 }, 2); //var r2 = QRDataEncoder.CalculateECCWords(new byte[] { 2 }, 2); //var r3 = QRDataEncoder.CalculateECCWords(new byte[] { 1, 2 }, 4); // System.IO.File.WriteAllBytes(@"D:\MyDocuments\Desktop\1.bin", new byte[] { 1 }); //const int N = 5; //const int M = 5; //var left = new byte[N][]; //var right = new byte[N][]; //for (int i = 0; i < N; i++) { // left[i] = new byte[N]; // left[i][i] = 1; // right[i] = new byte[M]; //} //Random random = new Random(); //for (int i = 0; i < N; i++) { // for (int j = 0; j < M; j++) { // right[i][j] = (byte) (random.Next(10) < 2 ? 1 : 0); // } //} //Print(left, right); //System.Console.WriteLine(); //List<int> indexes; //(indexes, right) = BitBlock.GaussianElimination(left, right); //Print(left, right); //for (int i = 0; i < indexes.Count; i++) { // System.Console.Write(indexes[i] + " "); //} //System.Console.WriteLine(); int version = 20; byte[] data1 = Encoding.UTF8.GetBytes("0.0"); var N = QRInfo.GetN(version); int padding = 6; // byte[] data1 = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; var pixels = new ImagePixel[N, N]; for (int x = 0; x < pixels.GetLength(0); x++) { for (int y = 0; y < pixels.GetLength(1); y++) { //if (x > 15) { // pixels[x, y] = ImagePixel.White; //} else if (x <= 4) { // pixels[x, y] = ImagePixel.White; //} else { // pixels[x, y] = ImagePixel.Any; //} //if (x >= 11 || y <= 8) { // pixels[x, y] = ImagePixel.White; //} else { // pixels[x, y] = ImagePixel.Any; //} if (y >= padding && y < N - padding && x >= padding && x < N - padding) { pixels[x, y] = y % 2 == 0 ? ImagePixel.White : ImagePixel.Black; } else { pixels[x, y] = ImagePixel.Any | ImagePixel.White; } } } //pixels[0, 9] = ImagePixel.Black; //pixels[0, 10] = ImagePixel.Black; //pixels[0, 11] = ImagePixel.Black; //pixels[0, 12] = ImagePixel.Black; //pixels[1, 9] = ImagePixel.Black; //pixels[1, 10] = ImagePixel.Black; //pixels[1, 11] = ImagePixel.Black; //pixels[1, 12] = ImagePixel.Black; //pixels[9, 0] = ImagePixel.Any; //pixels[10, 0] = ImagePixel.Any; //pixels[11, 0] = ImagePixel.Any; //pixels[12, 0] = ImagePixel.Any; ////pixels[9, 1 ]= ImagePixel.Any; //pixels[10, 1] = ImagePixel.Any; //pixels[11, 1] = ImagePixel.Any; //pixels[12, 1] = ImagePixel.Any; int cellSize = 5; pixels = QRCodeMagician.GetImagePixel(version, new Bitmap(@"Z:\1.png"), cellSize); var qr = QRCodeMagician.ImageArt(DataMode.Byte, version, ECCLevel.L, MaskVersion.Version100, data1, pixels, QRInfo.GetMaxErrorAllowBytes(version, ECCLevel.L) / 2); Save(@"Z:\art.png", qr, null, cellSize); var qr2 = QRCodeMagician.ImageArt(DataMode.Byte, version, ECCLevel.L, MaskVersion.Version100, data1, pixels); Save(@"Z:\art2.png", qr2, null, cellSize); //var bits = new BitSet(1000); //bits[3] = true; //var r1 = GF.XPolynom.RSEncode(bits.ByteArray, 0, bits.ByteArray.Length, 100); //bits[3] = false; //bits[300] = true; //var r2 = GF.XPolynom.RSEncode(bits.ByteArray, 0, bits.ByteArray.Length, 100); //bits[3] = true; //var r3 = GF.XPolynom.RSEncode(bits.ByteArray, 0, bits.ByteArray.Length, 100); }
public async Task NextClicked(string document, string phone) { if (document.Trim().Length == 0) { View.ShowDialog("document_error", "msg_ok", null); return; } View.ShowLoading(); var response = await getUserPaperUseCase.Execute(document, phone); if (response.ErrorCode > 0) { View.HideLoading(); View.ShowDialog(response.Message, "msg_ok", null); } else { var passportresponse = await getSecurityPassportUseCase.Execute(response.Data.IdEmpleado); if (passportresponse.ErrorCode > 0) { View.ShowResult(response.Data); } else if (passportresponse.Data == null) { View.ShowResult(response.Data); } else { var info = new QRInfo() { IdEmpleado = passportresponse.Data.IdEmpleado, FechaExpiracion = passportresponse.Data.FechaExpiracion, PasaporteColor = passportresponse.Data.ColorPasaporte, Manual = true }; var now = DateTime.Now; if (!info.FechaExpiracion.HasValue) { View.ShowResult(response.Data); } else { var dateCompare = DateTime.Compare(info.FechaExpiracion.Value, now); if (dateCompare < 0) //ha caducado, la fecha de expiración es anterior a la fecha actual { View.ShowResult(response.Data); } else if (passportresponse.Data.ColorPasaporte == "Gris") { View.ShowResult(response.Data); } else { Locator.Current.GetService <AppSession>().QRInfo = info; navigator.GoToResult(); } } } } View.HideLoading(); }
private static void NewMethod1() { Random random = new Random(); const int Version = 6; var data = Encoding.UTF8.GetBytes("0.0"); int N = QRInfo.GetN(Version); ImagePixel[,] pixels = new ImagePixel[N, N]; const int range = 7; for (int y = 0; y < N; y++) { for (int x = 0; x < N; x++) { if (y < N / 2 && random.NextDouble() < (N / 2 - y) / (double)range) { pixels[x, y] = ImagePixel.Black; } else if (y > N / 2 && random.NextDouble() < (y - N / 2) / (double)range) { pixels[x, y] = ImagePixel.White; } else if (y < N / 2) { pixels[x, y] = ImagePixel.Black | ImagePixel.Any; } else { pixels[x, y] = ImagePixel.White | ImagePixel.Any; } } } var qrcode = QRCodeMagician.ImageArt(DataMode.Alphanumeric, Version, ECCLevel.L, MaskVersion.Version010, data, pixels); for (int y = 0; y < N; y++) { for (int x = 0; x < N; x++) { void SetValue(bool value) { switch (qrcode[x, y].Type) { case QRValueType.Data: case QRValueType.DataPadding: case QRValueType.Ecc: case QRValueType.TimingPatterns: case QRValueType.FixedPoint: case QRValueType.Padding: qrcode[x, y].Value = value; break; } } if (y < N / 2 - range) { SetValue(true); } else if (y > N / 2 + range) { SetValue(false); } else if (qrcode[x, y].Type == QRValueType.TimingPatterns) { SetValue(y < N / 2); } } } Save(@"Z:\out.png", qrcode, null, 6); }