Foros del Web » Programación para mayores de 30 ;) » .NET »

Generar Código Qr a través de una codificación en Base 64

Estas en el tema de Generar Código Qr a través de una codificación en Base 64 en el foro de .NET en Foros del Web. Hola ForosdelWeb Mi pregunta es la siguiente con la librería ThoughtWorks.QRCode.Codec en c#. Esta liberia me genera el codigo QR hasta cierta longituda de cadena ...
  #1 (permalink)  
Antiguo 13/02/2021, 10:57
 
Fecha de Ingreso: marzo-2008
Ubicación: Posadas Misiones Argentina
Mensajes: 480
Antigüedad: 16 años, 1 mes
Puntos: 1
Generar Código Qr a través de una codificación en Base 64

Hola ForosdelWeb

Mi pregunta es la siguiente con la librería ThoughtWorks.QRCode.Codec en c#. Esta liberia me genera el codigo QR hasta cierta longituda de cadena , pero cuando la cadena es más larga como muestro en el ejemplo de abajo me produce el error: indice fuera de los limites de la matriz.

Ejemplo de la cadena: {"ver":1,"fecha":"2020-10-13","cuit":30000000007,"ptoVta":10,"tipoCmp":1,"nr oCmp":94,"importe":12100,"moneda":"DOL","ctz":65," tipoDocRec":80,"nroDocRec":20000000001,"tipoCodAut ":"E","codAut":70417054367476}

Código de la cadena del ejemplo en base 64 en la cual se realiza la conversion a código qr: eyJ2ZXIiOjEsImZlY2hhIjoiMjAyMC0xMC0xMyIsImN1aXQiOj MwMDAwMDAwMDA3LCJwdG9WdGEiOjEwLCJ0aXBvQ21wIjoxLCJu cm9DbXAiOjk0LCJpbXBvcnRlIjoxMjEwMCwibW9uZWRhIjoiRE 9MIiwiY3R6Ijo2NSwidGlwb0RvY1JlYyI6ODAsIm5yb0RvY1Jl YyI6MjAwMDAwMDAwMDEsInRpcG9Db2RBdXQiOiJFIiwiY29kQX V0Ijo3MDQxNzA1NDM2NzQ3Nn0=

Aclaración: Cuando la longitud de la cadena es menor al de ejemplo, mas o menos a la mitad o un poco más, me realiza bien la generación del códgo QR, pero con la longitud del ejemplo ya no.

Señores del foro si me pueden ayudar a encontrar una solución a esta error. Se que me puede decir que busque otra librería , pero necesito hacerla en esta libreria porque luego este código se unirá a un proyecto donde tambien se usa esta librería.

A continuación dejo el código. En negrita está donde se produce el error en visual studio. Gracias.

Cita:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;
using System.Drawing.Imaging;
using ThoughtWorks.QRCode.Codec;

namespace Generar_Codigo_QR_Lib_QRCode
{
public class QRCode
{
public Bitmap generarqr(string cadena, string ruta)
{
QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
Image img;
Bitmap bmp;
//conversor de cadena en byte
byte[] Byte = System.Text.Encoding.UTF8.GetBytes(cadena);
//conversor de byte a base 64
string cadenaBase64 = Convert.ToBase64String(Byte);
//definir la escala del código QE
qrCodeEncoder.QRCodeScale = 3;
//genrar el código QR
img = qrCodeEncoder.Encode(cadenaBase64);

//crear una instancia de tipo Bitmap
bmp = new Bitmap(img);
//Guardar la ímágen QR resultante en una ruta específica
bmp.Save(@ruta + "\\" + "imagenqr.png");
return bmp;
}
}
}
  #2 (permalink)  
Antiguo 15/02/2021, 14:10
 
Fecha de Ingreso: abril-2006
Mensajes: 583
Antigüedad: 18 años
Puntos: 120
Respuesta: Generar Código Qr a través de una codificación en Base 64

en lenguajes de programacion como C# o java no siempre se asigna dinámicamente la memoria para procesar un string o bien la libreria que usas no la estas usando adecuadamente, recuerda leer siempre la documentacion, en google ay varios ejemplos de uso , y puede que necesites ello

https://csharp.hotexamples.com/es/ex...-examples.html

se puede ver en una parte el uso

Código Java:
Ver original
  1. qrEncoder.QRCodeScale = Convert.ToInt32(txtSize.Text);

Código Java:
Ver original
  1. int scale = Convert.ToInt16(txtSize.Text);
  2.                 qrCodeEncoder.QRCodeScale = scale;
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.com/pools/c/8lmNLmWnG9

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:43.