2009-10-31 11 views
8

NOTA: My original question fue sobre si el puerto ZXing C# es confiable, pero aquí, estoy tratando de encontrar la manera de usarlo. Por lo tanto, no son duplicados.Cómo usar ZXing C# Puerto

Estoy tratando de usar el módulo ZXing C#, pero estoy teniendo problemas. ¿Alguien que haya usado ZXing antes sabe cómo hacerlo correctamente? Desafortunadamente, la documentación de C# es bastante pequeña.

Mi código actual es:

using com.google.zxing; 
using com.google.zxing.client.j2se; 
using com.google.zxing.common; 

//... 

Reader reader = new MultiFormatReader(); 
MonochromeBitmapSource image = new BufferedImageMonochromeBitmapSource(new Bitmap(Image.FromFile("barcode.jpg")),false); 

Result result = reader.decode(image); 
string text = result.getText(); 
sbyte[] rawbytes = result.getRawBytes(); 
BarcodeFormat format = result.getBarcodeFormat(); 
ResultPoint[] points = result.getResultPoints(); 
Console.WriteLine("barcode text: {0}", text); 
Console.WriteLine("raw bytes: {0}", rawbytes); 
Console.WriteLine("format: {0}", format); 
Console.ReadLine(); 

Estoy recibiendo una excepción en la línea que comienza con "número Resultado = ..." El ReaderException afirma: "Unable to cast object of type 'com.google.zxing.oned.MultiFormatOneDReader' to type 'com.google.zxing.Reader'.

Entonces, ¿qué soy yo haciendo mal?

ACTUALIZACIÓN: Voy a intentar las ideas sugeridas, pero mientras tanto, encontré este issue en el grupo ZXing.

Respuesta

1

sospecho que sólo se echa en falta un fundido/están utilizando el tipo incorrecto, intente cambiar

Result result = reader.decode(image); 

línea en una de las siguientes

Result result = (Result)reader.decode(image); 

o posiblemente

MultiFormatOneDResult result = reader.decode(image); 

Me temo que no tengo acceso al compilador de aC# en este momento, así que no puedo verificar esto, así que me disculpo si estoy muy lejos de la compilación. ¡marca!

2

Creo que debe ser una deficiencia en el puerto, ya que en el Java original estas clases son compatibles con el cast. Tal vez simplemente utilice MultiFormatOneDReader como el tipo de referencia en el código en lugar de Reader, aunque la línea debería haber estado bien tal como está. Si de lo contrario arregla la fuente y desea enviar el cambio, déjenos saber (el proyecto).

11

Este es un ejemplo para generar un código QR.

 QRCodeWriter writer = new QRCodeWriter(); 
     com.google.zxing.common.ByteMatrix matrix; 

     int size = 180; 
     matrix = writer.encode("MECARD:N:Owen,Sean;ADR:76 9th Avenue, 4th Floor, New York, NY 10011;TEL:+12125551212;EMAIL:[email protected];; ", BarcodeFormat.QR_CODE, size, size, null); 


     Bitmap img = new Bitmap(size, size); 
     Color Color = Color.FromArgb(0, 0, 0); 

     for (int y = 0; y < matrix.Height; ++y) 
     { 
      for (int x = 0; x < matrix.Width; ++x) 
      { 
       Color pixelColor = img.GetPixel(x, y); 

       //Find the colour of the dot 
       if (matrix.get_Renamed(x, y) == -1) 
       { 
        img.SetPixel(x, y, Color.White); 
       } 
       else 
       { 
        img.SetPixel(x, y, Color.Black); 
       } 
      } 
     } 


     img.Save(@"c:\test.bmp",ImageFormat.Bmp); 

ver el formato de código de barras en http://code.google.com/p/zxing/wiki/BarcodeContents

+0

La pregunta es acerca de leer códigos de barras, no crearlos, tema tan mal, pero la respuesta agradable :) – Sam

Cuestiones relacionadas