Cómo leer una imagen de código de barras en Xamarin Forms
Estoy intentando leer el texto de una imagen de un código QR en mi aplicación móvil. Estoy utilizando Xamarin.Forms con el paquete NuGet de ZXing.
He logrado obtener el archivo utilizando “Xamarin.Essentials FilePicker”. Pero no sé cómo leer realmente el código de barras. He revisado algunas soluciones en Stackoverflow y todas parecen estar basadas en Xamarin.Android (usando objetos BinaryBitmap). Necesito una solución que funcione también para iOS y UWP. Esto es lo que tengo hasta ahora:
“`
string file = "";
var filePickerOptions = new PickOptions
{
PickerTitle = "Seleccionar imagen de código de barras",
FileTypes = FilePickerFileType.Images
};
var result = await FilePicker.PickAsync(filePickerOptions);
if (result != null)
{
file = result.FullPath;
var res = Decode(file, BarcodeFormat.QR_CODE);
Console.WriteLine(res.Text);
}
public Result Decode(string file, BarcodeFormat? format = null, KeyValuePair<decodehinttype, object="">[] aditionalHints = null)
{
var r = GetReader(format, aditionalHints);
/* Necesito alguna función aquí que me permita obtener BinaryBitmap a partir de la ruta de la imagen o algo similar. */
var image = GetBinaryBitmap(file);
var result = r.decode(image);
return result;
}
MultiFormatReader GetReader(BarcodeFormat? format, KeyValuePair<decodehinttype, object="">[] aditionalHints)
{
var reader = new MultiFormatReader();
<pre><code>var hints = new Dictionary<decodehinttype, object="">();
if (format.HasValue)
{
hints.Add(DecodeHintType.POSSIBLE_FORMATS, new List<barcodeformat>() { format.Value });
}
if (aditionalHints != null)
{
foreach (var ah in aditionalHints)
{
hints.Add(ah.Key, ah.Value);
}
}
reader.Hints = hints;
return reader;
</code></pre>
}
“`</decodehinttype,></decodehinttype,></decodehinttype,>
davy.ai
Para leer el código de barras de una imagen de código QR en una aplicación móvil utilizando Xamarin.Forms con el paquete ZXing NuGet, necesitas usar
Xamarin.Essentials FilePicker
para obtener el archivo, y luego utilizar la funciónDecode
para decodificar el texto. Sin embargo, necesitas escribir una función que te permita obtenerBinaryBitmap
a partir de la ruta del archivo de imagen o algo similar.Para comenzar, necesitas definir la variable
file
y utilizar la funciónPickAsync
para obtener el archivo:Después de eso, necesitas definir las funciones
Decode
yGetReader
. La funciónDecode
recibe la ruta del archivo de imagen, unBarcodeFormat
y pistas adicionales como parámetros. Dado que estás utilizando un código QR, puedes pasarBarcodeFormat.QR_CODE
. También necesitas escribir una función que te permita obtenerBinaryBitmap
a partir de la ruta del archivo de imagen:Finalmente, la función
GetReader
crea un nuevo objetoMultiFormatReader
y establece las pistas. Si hay un parámetroBarcodeFormat
, agrega el formato a las pistas. Si hay pistas adicionales, también las agrega a las pistas:Con estas funciones, ahora puedes leer el texto de una imagen de código QR en tu aplicación móvil utilizando Xamarin.Forms con el paquete ZXing NuGet.</decodehinttype,></decodehinttype,></decodehinttype,>