2009-10-31 24 views
8

GHI CHÚ: My original question là về việc cổng ZXing C# có đáng tin cậy không, nhưng ở đây, tôi đang cố gắng tìm ra cách sử dụng nó. Vì vậy, chúng không phải là bản sao.Cách sử dụng ZXing C# Port

Tôi đang cố gắng sử dụng mô-đun ZXing C#, nhưng tôi đang gặp sự cố. Có ai đã từng sử dụng ZXing trước khi biết làm thế nào để làm điều đó một cách chính xác? Thật không may, tài liệu C# khá nhỏ.

mã hiện tại của tôi là:

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(); 

tôi nhận được một ngoại lệ trên dòng bắt đầu với "kết quả Kết quả = ..." Các ReaderException khẳng định: "Unable to cast object of type 'com.google.zxing.oned.MultiFormatOneDReader' to type 'com.google.zxing.Reader'.

Vì vậy, là những gì tôi làm sai?

CẬP NHẬT: Tôi sẽ thử các ý tưởng được đề xuất, nhưng trong thời gian chờ đợi, tôi thấy số này issue trong nhóm ZXing.

Trả lời

1

tôi nghi ngờ bạn đang chỉ thiếu một dàn diễn viên/đang sử dụng các loại sai, hãy thử thay đổi

Result result = reader.decode(image); 

dòng trong một trong các cách sau

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

hoặc có thể

MultiFormatOneDResult result = reader.decode(image); 

Tôi sợ rằng tôi không có quyền truy cập vào trình biên dịch aC# ngay bây giờ, vì vậy tôi không thể xác minh điều này - vì vậy tôi xin lỗi nếu tôi là cách tắt dấu!

2

Tôi nghĩ rằng đó phải là sự thiếu hụt trong cổng, vì trong Java ban đầu, các lớp này tương thích với tính năng truyền. Có lẽ chỉ cần sử dụng MultiFormatOneDReader làm kiểu tham chiếu trong mã chứ không phải là Reader, mặc dù dòng này phải được sử dụng tốt. Nếu bạn sửa chữa nguồn khác và muốn gửi thay đổi, hãy cho chúng tôi (dự án) biết.

11

Đây là mẫu để tạo QRCode.

 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); 

Xem định dạng mã vạch tại http://code.google.com/p/zxing/wiki/BarcodeContents

+0

câu hỏi là về đọc mã vạch, không tạo ra chúng, vì vậy sai chủ đề, nhưng câu trả lời thoải mái :) – Sam