J'ai une application qui reçoit le code QR du serveur. Je veux le décoder (pas avec l'intention et la caméra) et afficher le texte qu'il contient dans mon application. J'ai déjà fait cela en Java SE avec des pots de ZXing avec ce code:
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(); } }
3 Réponses :
Quadkmark et QR Droid indiquent en fait ce que dit le code et vous pouvez décoder des codes à barres enregistrés sur votre téléphone. Appuyez sur le bouton de menu lorsque vous chargez l'image et sélectionnez Partager, recherchez Decoder QR Droid ou Decoder Quadmmark, et la magie fera la magie. Je préfère Quadkmark pour la lecture de codes, car cela me dit ce qui est saisi dans le code. P>
Télécharger ZXING à partir de Google Code et ce fichier de classe: ZXING-1.6 / ZXING-1.6 / AndroideTest / SRC / COM / COM / ZXING / CLIENT / ANDROIDTEST / RGBLIMULANDESOURCE.JAVA CODE> peut vous aider. p>
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; } }
avez-vous testé cette solution?
Quelqu'un peut-il me dire comment obtenir l'URI de l'image
Salut! Avez-vous résolu ce problème? J'ai le même problème et je sais que je n'ai pas pu trouver une solution. Merci d'avance
Non, je n'ai pas eu de chance, alors j'ai dû oublier cette idée. Peut-être maintenant, demi-année plus tard, les choses ont été résolues.
CaptureActivity Capturez l'image de code QR de la caméra et après le décodage, il affiche des résultats en fonction du type de données stockées dans le code QR. par exemple. Si l'URL du site Web est codée dans le code QR, l'écran de résultat disposera d'un bouton pour ouvrir cette URL et cette URL. 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 le fait en cas de décodage via la captuactérie. Que dois-je faire après avoir reçu une sortie dans "Résultat des résultats"?
@Coolzerzerinfinity grap de chance?