2010-08-06 5 views
4

J'ai une application qui reçoit le code qr du serveur. Je veux le décoder (pas avec l'intention et l'appareil photo) et afficher le texte qu'il contient dans mon application. Je l'ai alredy fait cela en Java SE avec des pots de ZXing avec ce code:Décoder le code qr de l'image stockée sur le téléphone avec Zxing (sur téléphone Android)

private class QRCodeDecoder { 
     public String decode(File imageFile) { 
     BufferedImage image; 
     try { 
     image = ImageIO.read(imageFile); 
     } catch (IOException e1) { 
     return "io outch"; 
     } 

     // creating luminance source 
     LuminanceSource lumSource = new BufferedImageLuminanceSource(image); 
     BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(lumSource)); 

     // barcode decoding 
     QRCodeReader reader = new QRCodeReader(); 

     Result result = null; 
     try { 
     result = reader.decode(bitmap); 
     } catch (ReaderException e) { 
     return "reader error"; 
     } 

     return result.getText(); 

     } 
     } 

Mais sur Android, BufferedImage ne se trouve pas. Est-ce que quelqu'un a décodé le code QR sur Android à partir de l'image stockée sur le téléphone? Tnx.

+0

Salut! Avez-vous résolu ce problème? Je rencontre le même problème et jusqu'à ce que je ne sois pas capable de trouver une solution. Merci d'avance –

+0

Non, je n'ai pas eu de chance, donc j'ai dû oublier cette idée. Peut-être maintenant, une demi-année plus tard, les choses ont été résolues. – DixieFlatline

+0

captureActivity capture l'image du code QR de la caméra et après le décodage, elle affiche les résultats en fonction du type de données stockées dans le code QR. par exemple. Si l'URL d'un site Web est encodée en code QR, l'écran de résultats aura un bouton pour ouvrir cette URL et afficher la même chose. J'ai besoin de lire l'image de la carte SD, de la décoder et de gérer la sortie de la même manière que zxing en cas de décodage via captureActivity. Que dois-je faire après avoir obtenu la sortie "Résultat"? –

Répondre

-3

Quickmark et qr droid lisent réellement ce que dit le code, et vous pouvez décoder les codes à barres enregistrés sur votre téléphone. Appuyez sur le bouton de menu lorsque vous chargez l'image et sélectionnez partager, trouver décoder qr droid ou décoder quickmark, et le faire la magie. Je préfère le raccourci pour lire les codes, car il me dit ce qui est tapé dans le code.

+3

Mais j'avais besoin de ça dans le code. – DixieFlatline

2

Télécharger ZXing à partir de google code, et ce fichier de classe: ZXing-1.6/zxing-1.6/androidtest/src/com/google/zxing/client/androidtest/RGBLuminanceSource.java peut vous aider.

10

Dans Android, vous pouvez le faire de cette façon:

@Override 
    protected Result doInBackground(Void... params) 
    { 
     try 
     { 
      InputStream inputStream = activity.getContentResolver().openInputStream(uri); 
      Bitmap bitmap = BitmapFactory.decodeStream(inputStream); 
      if (bitmap == null) 
      { 
       Log.e(TAG, "uri is not a bitmap," + uri.toString()); 
       return null; 
      } 
      int width = bitmap.getWidth(), height = bitmap.getHeight(); 
      int[] pixels = new int[width * height]; 
      bitmap.getPixels(pixels, 0, width, 0, 0, width, height); 
      bitmap.recycle(); 
      bitmap = null; 
      RGBLuminanceSource source = new RGBLuminanceSource(width, height, pixels); 
      BinaryBitmap bBitmap = new BinaryBitmap(new HybridBinarizer(source)); 
      MultiFormatReader reader = new MultiFormatReader(); 
      try 
      { 
       Result result = reader.decode(bBitmap); 
       return result; 
      } 
      catch (NotFoundException e) 
      { 
       Log.e(TAG, "decode exception", e); 
       return null; 
      } 
     } 
     catch (FileNotFoundException e) 
     { 
      Log.e(TAG, "can not open file" + uri.toString(), e); 
      return null; 
     } 
    } 
+0

avez-vous testé cette solution? – Erum

+0

J'ai testé cette solution et oui cela fonctionne – n00b

+0

quelqu'un peut-il s'il vous plaît laissez-nous savoir comment obtenir l'uri de l'image – dmSherazi

Questions connexes