/ / Cómo convertir byte [] a código de barras en ZXing - zxing

Cómo convertir byte [] a código de barras en ZXing - zxing

ZXing.Result obtenido de ZXing.BarcodeReader proporciona una propiedad de RawBytes de byte[]. Sin embargo, lo he intentado pero no he podido encontrar una función en ZXing.BarcodeWriter que acepta byte[] como su argumento.

Quiero tener un código de barras de ZXing.BarcodeWriter que es exactamente lo mismo que eso ZXing.BarcodeReader lee.

por ejemplo, un código de barras se conoce como Código 128,

BarcodeReader da RawBytes comienza con 3 bytes, 105, 102, 42,

lo que significa [Código de inicio C], [FNC 1], [42] en el código 128,

lo que significa que el código de barras comienza con 2 dígitos 4, 2.

La principal razón para encontrar tal función es que los metadatos se pierden si un código de barras se convierte a string y convertido de nuevo.

string solo representa 4 y 2, y [Start Code C] y [FNC 1] se pierden.

¿Hay una función para eso? Puede asumir que el formato del código de barras es conocido.

Estoy usando ZXing.NET, pero supongo que las funciones son similares en diferentes plataformas.

Respuestas

0 para la respuesta № 1

Depende del tipo de código de barras, si es una codificaciónmétodo con un parámetro de matriz de bytes está disponible. Para Aztec-Barcode puede usar la clase com.google.zxing.aztec.encoder.Encoder que proporciona el método:

public static AztecCode encode(byte[] data)

La clase Encoder del Código QR, por ejemplo, no proporciona un método de codificación con un byte [].


0 para la respuesta № 2

No, no hay BarcodeWriter que acepte una matriz de bytes. Pero puede establecer una opción que interprete la simbología GS1.

var reader = new BarcodeReader { Options = new DecodingOptions { AssumeGS1 = true } };

El lector de código de barras ahora convertirá el FNC1palabra de código para una representación de cadena en el resultado, en su caso "] C142". La representación FNC1 "] C1" no es muy intuitiva, pero está definida en la especificación GS1 para el Código 128 5.4.6.4. Cada palabra de código FNC1 siguiente se traduce al carácter separador de grupo (GS / 0x1D / (char) 29).

El escritor del código de barras por otro lado usa soloel caracter separador de grupo Esto significa que si desea generar el mismo código de barras a partir de la cadena resultante, debe reemplazar el "] C1" por "(char) 29".