2011-06-08 32 views
0

私はQRバーコードをデコードするためにzxing C#ポートを使用しています。 コードはシンプルで、私がオンラインで見つけた例に基づいています(下記参照)。
問題は、常に「インデックスが配列の境界外です」という例外がスローされることです。
私のコードサンプルは、VB.NETであることが起こるが、zxingライブラリは、私は別のフォーラムで同じ問題に文句複数の人を見てきましたZXINGポートがqrcodeのデコードに失敗しました

Dim re As qrcode.QRCodeReader 
re = New qrcode.QRCodeReader() 

Dim Img As New Bitmap("<image file path here>") 

Dim res As com.google.zxing.Result 

Dim bufimg As com.google.zxing.client.j2se.BufferedImageMonochromeBitmapSource 
bufimg = New client.j2se.BufferedImageMonochromeBitmapSource(Img, False) 
res = re.decode(bufimg) 

Dim ret As String = res.getText() 

C#で実行されていますが、提案された解決策を見つけていません。

UPDATE誰でも簡単に.NETアプリケーションと統合することができます別の良いQRリーダーを知っている場合は、uが使用する場合は、このつもり助けuの場合は知っているが、私は私のコードを貼り付け

+1

あなたはC#を2回言いますが、VBコードが表示されます。あなたが使っているライブラリではなく、あなたが書いているコードに従って質問にタグを付けるべきです。 – Amy

+0

@Inuyasha主な問題はC#zxingライブラリです。これらは応答を引き起こすべきキーワードです(そしてこのsin検索を見つける人々)。私はこのことを明確にするために質問を更新しました。 –

+1

ライブラリの内容は重要ではありません。あなたが書いているコードは重要です。 – Amy

答えて

0

いけないをお勧めしてください:

Imports Zxing = com.google.zxing 
Imports System.Drawing 

Public Class Decodificador 
    'Para leer todo tipo de codigos soportados por el proyecto zxing 
    Private Reader As New Zxing.MultiFormatReader 
    'Private Reader As New Zxing.qrcode.QRCodeReader 
    Private Result As Zxing.Result 
    Private Imagen As Bitmap 
    Private Bitm As Zxing.BinaryBitmap 
    Private HBin As Zxing.common.HybridBinarizer 
    Private Lumin As RGBLuminanceSource 
    'El orden para poder funcionar es: 
    'DetectarCodigoEnImagen (Obligatorio) >> PintarLocalizacion [opcional] >> DecodificarImagen (Obligatorio para sacar info). 
    ''' <summary> 
    ''' Devuelve True si ha localizado un QRCODE 
    ''' </summary> 
    ''' <param name="img"></param> 
    ''' <returns></returns> 
    ''' <remarks></remarks> 
    Public Function DetectarCodigoEnImagen(ByRef img As Image) As Boolean 
     Try 
      Imagen = New Bitmap(img) 
      'Creamos un Mapa binario con la imagen y su tamaño 
      Lumin = New RGBLuminanceSource(Imagen, Imagen.Width, Imagen.Height) 
      HBin = New Zxing.common.HybridBinarizer(Lumin) 
      Bitm = New Zxing.BinaryBitmap(HBin) 
      'Decodificamos el mapa binario y guardamos todos los datos en Result 
      Result = Reader.decode(Bitm) 
      'Si ha encontrado un QRCode provocará una excepción y devolverá False 
      'Si hay un QRCode, devolverá True 
      Return True 
     Catch ex As Exception 
      Return False 
     End Try 
    End Function 
    ''' <summary> 
    ''' Dibuja cuadros rojos y amarillos en la localización del Codigo QR, ralentiza mucho el sistema. 
    ''' Debe haberse detectado un codigo en la imagen para poder pintar. 
    ''' Devuelve la imagen con el Codigo QR y la localización pintada 
    ''' </summary> 
    ''' <param name="img"></param> 
    ''' <remarks></remarks> 
    Public Function PintarLocalizacionQrCode(ByRef img As Image) As Image 
     Try 
      'Archivamos en una matriz todos los puntos de localización del QRcode 
      Dim Puntos() As Zxing.ResultPoint = Result.ResultPoints 
      'Creamos Graficos desde la imagen y poder pintar posteriormente 
      Dim gr As Graphics = Graphics.FromImage(Imagen) 
      'Dim gr As Graphics = Graphics.FromImage(Imagen) 
      'Declaramos el tamaño del pincel para pintar y pintar2 
      Dim TamPincel As Integer = 4 
      Dim Pintar As New Pen(Color.Yellow, TamPincel) 
      Dim Pintar2 As New Pen(Color.Red, TamPincel) 
      'Declaramos una variable del mismo tipo que el arreglo Puntos() para poder navera por ella 
      Dim PuntoAuxiliar As com.google.zxing.ResultPoint 

      'Por cada punto en puntos() dibujamos 2 rectangulos en los indicadores de posición del QRCode 
      For Each PuntoAuxiliar In Puntos 
       gr.DrawRectangle(Pintar, New Rectangle(PuntoAuxiliar.X - 10, PuntoAuxiliar.Y - 10, 20, 20)) 
       gr.DrawRectangle(Pintar2, New Rectangle(PuntoAuxiliar.X - 13, PuntoAuxiliar.Y - 13, 26, 26)) 
      Next 
      'Liberamos la memoria 
      gr.Dispose() 
      Return Imagen 
     Catch ex As Exception 
      Throw ex 
     End Try 
    End Function 
End Class 
関連する問題